hakumi_components 0.1.17.pre → 0.1.19.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.
Files changed (647) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -3
  3. data/README.md +218 -369
  4. data/app/assets/javascripts/hakumi_components.js +40 -34
  5. data/app/assets/stylesheets/hakumi_components.css +1 -1
  6. data/app/components/{hakumi → hakumi_components}/admin_panel/component.html.erb +2 -2
  7. data/app/components/hakumi_components/admin_panel/component.rb +50 -0
  8. data/app/components/hakumi_components/affix/component.rb +112 -0
  9. data/app/components/{hakumi → hakumi_components}/alert/component.html.erb +3 -3
  10. data/app/components/hakumi_components/alert/component.rb +134 -0
  11. data/app/components/hakumi_components/anchor/component.rb +88 -0
  12. data/app/components/{hakumi → hakumi_components}/anchor/link/component.html.erb +1 -1
  13. data/app/components/hakumi_components/anchor/link/component.rb +53 -0
  14. data/app/components/hakumi_components/autocomplete/component.html.erb +94 -0
  15. data/app/components/hakumi_components/autocomplete/component.rb +228 -0
  16. data/app/components/hakumi_components/avatar/component.rb +124 -0
  17. data/app/components/hakumi_components/badge/component.rb +139 -0
  18. data/app/components/hakumi_components/base_component.rb +391 -0
  19. data/app/components/hakumi_components/breadcrumb/component.rb +38 -0
  20. data/app/components/hakumi_components/breadcrumb/item/component.html.erb +17 -0
  21. data/app/components/hakumi_components/breadcrumb/item/component.rb +83 -0
  22. data/app/components/hakumi_components/breadcrumb/item/menu_entry.rb +71 -0
  23. data/app/components/hakumi_components/button/component.rb +163 -0
  24. data/app/components/{hakumi → hakumi_components}/calendar/component.html.erb +24 -24
  25. data/app/components/hakumi_components/calendar/component.rb +471 -0
  26. data/app/components/hakumi_components/calendar/day_cell.rb +62 -0
  27. data/app/components/hakumi_components/calendar/display_model.rb +237 -0
  28. data/app/components/hakumi_components/calendar/event_entry.rb +54 -0
  29. data/app/components/hakumi_components/calendar/locale_pack.rb +28 -0
  30. data/app/components/hakumi_components/calendar/panel_entry.rb +48 -0
  31. data/app/components/hakumi_components/calendar/week_row.rb +28 -0
  32. data/app/components/{hakumi → hakumi_components}/card/component.html.erb +2 -2
  33. data/app/components/hakumi_components/card/component.rb +121 -0
  34. data/app/components/hakumi_components/card/grid/component.html.erb +3 -0
  35. data/app/components/hakumi_components/card/grid/component.rb +43 -0
  36. data/app/components/hakumi_components/card/meta/component.html.erb +23 -0
  37. data/app/components/hakumi_components/card/meta/component.rb +64 -0
  38. data/app/components/hakumi_components/carousel/autoplay_config.rb +27 -0
  39. data/app/components/{hakumi → hakumi_components}/carousel/component.html.erb +2 -2
  40. data/app/components/hakumi_components/carousel/component.rb +165 -0
  41. data/app/components/hakumi_components/carousel/dots_config.rb +36 -0
  42. data/app/components/hakumi_components/cascader/component.html.erb +59 -0
  43. data/app/components/hakumi_components/cascader/component.rb +168 -0
  44. data/app/components/{hakumi → hakumi_components}/checkbox/component.html.erb +5 -5
  45. data/app/components/hakumi_components/checkbox/component.rb +98 -0
  46. data/app/components/hakumi_components/checkbox/group/component.html.erb +12 -0
  47. data/app/components/hakumi_components/checkbox/group/component.rb +91 -0
  48. data/app/components/hakumi_components/checkbox/group/option.rb +34 -0
  49. data/app/components/{hakumi → hakumi_components}/collapse/component.html.erb +1 -1
  50. data/app/components/hakumi_components/collapse/component.rb +133 -0
  51. data/app/components/hakumi_components/collapse/panel/component.rb +108 -0
  52. data/app/components/{hakumi → hakumi_components}/color_picker/component.html.erb +21 -22
  53. data/app/components/hakumi_components/color_picker/component.rb +279 -0
  54. data/app/components/hakumi_components/color_picker/preset_group.rb +27 -0
  55. data/app/components/hakumi_components/concerns/form_field.rb +236 -0
  56. data/app/components/hakumi_components/concerns/form_field_contract.rb +57 -0
  57. data/app/components/hakumi_components/concerns/form_field_interface.rb +16 -0
  58. data/app/components/hakumi_components/concerns/input_control.rb +111 -0
  59. data/app/components/hakumi_components/concerns/input_control_contract.rb +47 -0
  60. data/app/components/hakumi_components/concerns/input_control_interface.rb +34 -0
  61. data/app/components/hakumi_components/concerns/selection_control.rb +122 -0
  62. data/app/components/hakumi_components/concerns/selection_control_contract.rb +47 -0
  63. data/app/components/hakumi_components/concerns/selection_control_interface.rb +34 -0
  64. data/app/components/{hakumi → hakumi_components}/container/component.rb +31 -16
  65. data/app/components/{hakumi → hakumi_components}/date_picker/component.html.erb +4 -6
  66. data/app/components/hakumi_components/date_picker/component.rb +254 -0
  67. data/app/components/{hakumi → hakumi_components}/date_picker/range_picker.html.erb +4 -4
  68. data/app/components/hakumi_components/date_picker/range_picker.rb +267 -0
  69. data/app/components/hakumi_components/date_picker/shared_rendering.rb +289 -0
  70. data/app/components/{hakumi → hakumi_components}/descriptions/component.html.erb +6 -6
  71. data/app/components/hakumi_components/descriptions/component.rb +219 -0
  72. data/app/components/hakumi_components/descriptions/item/component.rb +52 -0
  73. data/app/components/hakumi_components/divider/component.rb +86 -0
  74. data/app/components/{hakumi → hakumi_components}/drawer/component.html.erb +3 -3
  75. data/app/components/hakumi_components/drawer/component.rb +191 -0
  76. data/app/components/hakumi_components/dropdown/component.rb +94 -0
  77. data/app/components/{hakumi → hakumi_components}/dropdown/divider/component.rb +6 -2
  78. data/app/components/hakumi_components/dropdown/item/component.rb +73 -0
  79. data/app/components/{hakumi → hakumi_components}/empty/component.rb +68 -33
  80. data/app/components/hakumi_components/flex/component.rb +96 -0
  81. data/app/components/hakumi_components/float_button/back_top/component.rb +86 -0
  82. data/app/components/hakumi_components/float_button/component.rb +289 -0
  83. data/app/components/hakumi_components/float_button/group/component.rb +214 -0
  84. data/app/components/hakumi_components/float_button/group_cluster/component.rb +133 -0
  85. data/app/components/hakumi_components/float_button/group_spec.rb +259 -0
  86. data/app/components/hakumi_components/float_button/item_spec.rb +115 -0
  87. data/app/components/hakumi_components/float_button/position_config.rb +68 -0
  88. data/app/components/{hakumi → hakumi_components}/form/item/component.rb +36 -29
  89. data/app/components/hakumi_components/grid/col/component.rb +169 -0
  90. data/app/components/hakumi_components/grid/row/component.rb +97 -0
  91. data/app/components/{hakumi → hakumi_components}/icon/component.rb +53 -53
  92. data/app/components/{hakumi → hakumi_components}/image/component.html.erb +17 -17
  93. data/app/components/hakumi_components/image/component.rb +175 -0
  94. data/app/components/{hakumi → hakumi_components}/image/preview_group/component.html.erb +10 -10
  95. data/app/components/hakumi_components/image/preview_group/component.rb +75 -0
  96. data/app/components/hakumi_components/image/preview_group/item.rb +48 -0
  97. data/app/components/{hakumi → hakumi_components}/input/component.html.erb +1 -1
  98. data/app/components/hakumi_components/input/component.rb +261 -0
  99. data/app/components/hakumi_components/input/password/component.rb +84 -0
  100. data/app/components/{hakumi → hakumi_components}/input/text_area/component.html.erb +2 -2
  101. data/app/components/hakumi_components/input/text_area/component.rb +178 -0
  102. data/app/components/{hakumi → hakumi_components}/input_number/component.html.erb +9 -9
  103. data/app/components/hakumi_components/input_number/component.rb +280 -0
  104. data/app/components/hakumi_components/layout/component.html.erb +1 -0
  105. data/app/components/hakumi_components/layout/component.rb +28 -0
  106. data/app/components/hakumi_components/layout/content/component.html.erb +1 -0
  107. data/app/components/hakumi_components/layout/content/component.rb +29 -0
  108. data/app/components/hakumi_components/layout/footer/component.html.erb +1 -0
  109. data/app/components/hakumi_components/layout/footer/component.rb +29 -0
  110. data/app/components/hakumi_components/layout/header/component.html.erb +1 -0
  111. data/app/components/hakumi_components/layout/header/component.rb +29 -0
  112. data/app/components/hakumi_components/layout/sider/component.html.erb +1 -0
  113. data/app/components/hakumi_components/layout/sider/component.rb +90 -0
  114. data/app/components/hakumi_components/mentions/coercion.rb +46 -0
  115. data/app/components/{hakumi → hakumi_components}/mentions/component.html.erb +6 -6
  116. data/app/components/hakumi_components/mentions/component.rb +229 -0
  117. data/app/components/hakumi_components/mentions/option.rb +30 -0
  118. data/app/components/hakumi_components/menu/component.rb +117 -0
  119. data/app/components/{hakumi → hakumi_components}/menu/divider/component.rb +6 -2
  120. data/app/components/hakumi_components/menu/group/component.rb +48 -0
  121. data/app/components/hakumi_components/menu/item/component.rb +70 -0
  122. data/app/components/hakumi_components/menu/sub_menu/component.rb +104 -0
  123. data/app/components/hakumi_components/message/component.rb +141 -0
  124. data/app/components/{hakumi → hakumi_components}/modal/component.html.erb +7 -7
  125. data/app/components/hakumi_components/modal/component.rb +152 -0
  126. data/app/components/hakumi_components/modal/confirm/component.html.erb +23 -0
  127. data/app/components/hakumi_components/modal/confirm/component.rb +87 -0
  128. data/app/components/hakumi_components/modal/error/component.rb +20 -0
  129. data/app/components/hakumi_components/modal/info/component.rb +17 -0
  130. data/app/components/hakumi_components/modal/status_component.rb +150 -0
  131. data/app/components/hakumi_components/modal/success/component.rb +17 -0
  132. data/app/components/hakumi_components/modal/warning/component.rb +26 -0
  133. data/app/components/hakumi_components/notification/component.rb +160 -0
  134. data/app/components/{hakumi → hakumi_components}/pagination/component.html.erb +8 -12
  135. data/app/components/hakumi_components/pagination/component.rb +238 -0
  136. data/app/components/hakumi_components/pagination/page_item.rb +49 -0
  137. data/app/components/{hakumi → hakumi_components}/popconfirm/component.html.erb +2 -2
  138. data/app/components/hakumi_components/popconfirm/component.rb +120 -0
  139. data/app/components/{hakumi → hakumi_components}/popover/component.html.erb +2 -2
  140. data/app/components/hakumi_components/popover/component.rb +196 -0
  141. data/app/components/hakumi_components/progress/attribute_renderer.rb +354 -0
  142. data/app/components/hakumi_components/progress/circle_geometry.rb +76 -0
  143. data/app/components/{hakumi → hakumi_components}/progress/component.html.erb +19 -18
  144. data/app/components/hakumi_components/progress/component.rb +393 -0
  145. data/app/components/hakumi_components/progress/controller_locals_parser.rb +130 -0
  146. data/app/components/hakumi_components/progress/info_tooltip_policy.rb +39 -0
  147. data/app/components/hakumi_components/progress/info_value.rb +75 -0
  148. data/app/components/hakumi_components/progress/status_state.rb +31 -0
  149. data/app/components/hakumi_components/progress/steps_renderer.rb +149 -0
  150. data/app/components/hakumi_components/progress/stroke_gradient_value.rb +90 -0
  151. data/app/components/hakumi_components/qr_code/component.rb +405 -0
  152. data/app/components/{hakumi → hakumi_components}/radio/component.html.erb +3 -3
  153. data/app/components/hakumi_components/radio/component.rb +113 -0
  154. data/app/components/{hakumi → hakumi_components}/radio/group/component.html.erb +10 -10
  155. data/app/components/hakumi_components/radio/group/component.rb +181 -0
  156. data/app/components/hakumi_components/radio/group/option.rb +43 -0
  157. data/app/components/{hakumi → hakumi_components}/rate/component.html.erb +2 -2
  158. data/app/components/{hakumi → hakumi_components}/rate/component.rb +58 -12
  159. data/app/components/hakumi_components/result/component.rb +175 -0
  160. data/app/components/{hakumi → hakumi_components}/segmented/component.html.erb +1 -1
  161. data/app/components/hakumi_components/segmented/component.rb +232 -0
  162. data/app/components/hakumi_components/segmented/option.rb +191 -0
  163. data/app/components/{hakumi → hakumi_components}/select/component.html.erb +22 -22
  164. data/app/components/hakumi_components/select/component.rb +176 -0
  165. data/app/components/hakumi_components/selection_control/coercion.rb +161 -0
  166. data/app/components/hakumi_components/selection_control/entry.rb +22 -0
  167. data/app/components/hakumi_components/selection_control/option.rb +42 -0
  168. data/app/components/hakumi_components/selection_control/option_group.rb +34 -0
  169. data/app/components/hakumi_components/selection_control/tree_node.rb +123 -0
  170. data/app/components/hakumi_components/skeleton/avatar/component.rb +88 -0
  171. data/app/components/hakumi_components/skeleton/avatar_config.rb +79 -0
  172. data/app/components/hakumi_components/skeleton/button/component.rb +77 -0
  173. data/app/components/hakumi_components/skeleton/component.rb +186 -0
  174. data/app/components/{hakumi → hakumi_components}/skeleton/image/component.html.erb +1 -1
  175. data/app/components/hakumi_components/skeleton/image/component.rb +104 -0
  176. data/app/components/hakumi_components/skeleton/input/component.rb +66 -0
  177. data/app/components/hakumi_components/skeleton/node/component.rb +59 -0
  178. data/app/components/hakumi_components/skeleton/paragraph_config.rb +92 -0
  179. data/app/components/hakumi_components/skeleton/title_config.rb +31 -0
  180. data/app/components/{hakumi → hakumi_components}/slider/component.html.erb +11 -11
  181. data/app/components/hakumi_components/slider/component.rb +347 -0
  182. data/app/components/hakumi_components/slider/mark.rb +27 -0
  183. data/app/components/hakumi_components/space/compact/component.html.erb +1 -0
  184. data/app/components/hakumi_components/space/compact/component.rb +52 -0
  185. data/app/components/{hakumi → hakumi_components}/space/component.html.erb +1 -1
  186. data/app/components/hakumi_components/space/component.rb +109 -0
  187. data/app/components/hakumi_components/spin/component.rb +270 -0
  188. data/app/components/hakumi_components/splitter/component.html.erb +9 -0
  189. data/app/components/hakumi_components/splitter/component.rb +71 -0
  190. data/app/components/hakumi_components/splitter/panel/component.html.erb +1 -0
  191. data/app/components/hakumi_components/splitter/panel/component.rb +98 -0
  192. data/app/components/hakumi_components/statistic/component.rb +371 -0
  193. data/app/components/{hakumi → hakumi_components}/steps/component.html.erb +4 -4
  194. data/app/components/hakumi_components/steps/component.rb +177 -0
  195. data/app/components/hakumi_components/steps/item/component.rb +130 -0
  196. data/app/components/{hakumi → hakumi_components}/switch/component.html.erb +2 -3
  197. data/app/components/hakumi_components/switch/component.rb +150 -0
  198. data/app/components/hakumi_components/table/column/component.rb +137 -0
  199. data/app/components/hakumi_components/table/column_definition.rb +181 -0
  200. data/app/components/{hakumi → hakumi_components}/table/column_group/component.rb +35 -24
  201. data/app/components/{hakumi → hakumi_components}/table/component.html.erb +22 -31
  202. data/app/components/hakumi_components/table/component.rb +470 -0
  203. data/app/components/hakumi_components/table/concerns/attribute_helpers.rb +22 -0
  204. data/app/components/hakumi_components/table/concerns/cell_rendering.rb +277 -0
  205. data/app/components/hakumi_components/table/concerns/columns.rb +421 -0
  206. data/app/components/hakumi_components/table/concerns/editable.rb +68 -0
  207. data/app/components/hakumi_components/table/concerns/ellipsis.rb +64 -0
  208. data/app/components/hakumi_components/table/concerns/fixed_columns.rb +94 -0
  209. data/app/components/hakumi_components/table/concerns/surface_rendering.rb +365 -0
  210. data/app/components/hakumi_components/table/configs.rb +518 -0
  211. data/app/components/hakumi_components/table/definition_types.rb +40 -0
  212. data/app/components/hakumi_components/table/display_rows.rb +56 -0
  213. data/app/components/hakumi_components/table/ellipsis_config.rb +143 -0
  214. data/app/components/hakumi_components/table/fixed_offset.rb +36 -0
  215. data/app/components/hakumi_components/table/header_cell.rb +23 -0
  216. data/app/components/hakumi_components/table/row_record.rb +60 -0
  217. data/app/components/hakumi_components/table/row_render_state.rb +85 -0
  218. data/app/components/{hakumi → hakumi_components}/tabs/component.html.erb +11 -11
  219. data/app/components/hakumi_components/tabs/component.rb +246 -0
  220. data/app/components/hakumi_components/tabs/indicator_config.rb +34 -0
  221. data/app/components/hakumi_components/tabs/item/component.rb +147 -0
  222. data/app/components/hakumi_components/tag/component.rb +282 -0
  223. data/app/components/{hakumi → hakumi_components}/tag/group/component.rb +20 -8
  224. data/app/components/{hakumi → hakumi_components}/time_picker/component.html.erb +10 -10
  225. data/app/components/{hakumi → hakumi_components}/time_picker/component.rb +75 -21
  226. data/app/components/hakumi_components/timeline/component.html.erb +8 -0
  227. data/app/components/hakumi_components/timeline/component.rb +301 -0
  228. data/app/components/{hakumi → hakumi_components}/timeline/item/component.html.erb +2 -2
  229. data/app/components/hakumi_components/timeline/item/component.rb +198 -0
  230. data/app/components/{hakumi → hakumi_components}/tooltip/component.html.erb +1 -1
  231. data/app/components/hakumi_components/tooltip/component.rb +146 -0
  232. data/app/components/hakumi_components/tour/component.rb +183 -0
  233. data/app/components/hakumi_components/tour/step.rb +86 -0
  234. data/app/components/hakumi_components/transfer/coercion.rb +66 -0
  235. data/app/components/hakumi_components/transfer/component.html.erb +204 -0
  236. data/app/components/hakumi_components/transfer/component.rb +395 -0
  237. data/app/components/hakumi_components/transfer/item.rb +54 -0
  238. data/app/components/hakumi_components/transfer/operations.rb +31 -0
  239. data/app/components/{hakumi → hakumi_components}/tree/component.html.erb +1 -1
  240. data/app/components/hakumi_components/tree/component.rb +342 -0
  241. data/app/components/hakumi_components/tree/concerns/node_rendering.rb +365 -0
  242. data/app/components/hakumi_components/tree/node.rb +276 -0
  243. data/app/components/{hakumi → hakumi_components}/tree_select/component.html.erb +27 -13
  244. data/app/components/hakumi_components/tree_select/component.rb +270 -0
  245. data/app/components/hakumi_components/typography/base_component.rb +142 -0
  246. data/app/components/hakumi_components/typography/link/component.rb +91 -0
  247. data/app/components/{hakumi → hakumi_components}/typography/paragraph/component.rb +7 -1
  248. data/{sig/hakumi/typography/text/component.rbs → app/components/hakumi_components/typography/text/component.rb} +3 -1
  249. data/app/components/hakumi_components/typography/title/component.rb +84 -0
  250. data/app/components/hakumi_components/upload/component.html.erb +135 -0
  251. data/app/components/hakumi_components/upload/component.rb +367 -0
  252. data/app/components/hakumi_components/upload/file_entry.rb +53 -0
  253. data/app/controllers/{hakumi → hakumi_components}/components_controller.rb +3 -2
  254. data/app/form_builders/hakumi_components/form_builder/contracts.rb +55 -0
  255. data/app/form_builders/hakumi_components/form_builder/field_context.rb +43 -0
  256. data/app/form_builders/hakumi_components/form_builder/model_binding.rb +163 -0
  257. data/app/form_builders/hakumi_components/form_builder.rb +403 -0
  258. data/app/helpers/hakumi_components/form_helper.rb +43 -0
  259. data/app/javascript/hakumi_components/controllers/hakumi/admin_panel_controller.js +5 -7
  260. data/app/javascript/hakumi_components/controllers/hakumi/back_top_controller.js +1 -1
  261. data/app/javascript/hakumi_components/controllers/hakumi/button_controller.js +108 -2
  262. data/app/javascript/hakumi_components/controllers/hakumi/calendar_controller.js +183 -95
  263. data/app/javascript/hakumi_components/controllers/hakumi/color_picker_controller.js +23 -285
  264. data/app/javascript/hakumi_components/controllers/hakumi/date_picker_controller.js +274 -262
  265. data/app/javascript/hakumi_components/controllers/hakumi/float_button_group_controller.js +2 -2
  266. data/app/javascript/hakumi_components/controllers/hakumi/message_controller.js +4 -2
  267. data/app/javascript/hakumi_components/controllers/hakumi/modal_controller.js +119 -125
  268. data/app/javascript/hakumi_components/controllers/hakumi/table/editable.js +291 -0
  269. data/app/javascript/hakumi_components/controllers/hakumi/table_controller.js +166 -366
  270. data/app/javascript/hakumi_components/controllers/hakumi/tabs_controller.js +8 -2
  271. data/app/javascript/hakumi_components/controllers/hakumi/tag_controller.js +27 -25
  272. data/app/javascript/hakumi_components/controllers/hakumi/tag_group_controller.js +19 -18
  273. data/app/javascript/hakumi_components/controllers/hakumi/theme_controller.js +116 -117
  274. data/app/javascript/hakumi_components/controllers/hakumi/transfer_controller.js +17 -1
  275. data/app/javascript/hakumi_components/controllers/hakumi/tree_controller.js +363 -78
  276. data/app/javascript/hakumi_components/controllers/hakumi/typography_controller.js +3 -3
  277. data/app/javascript/hakumi_components/controllers/hakumi/upload_controller.js +320 -204
  278. data/app/javascript/hakumi_components/core/render_component.js +37 -11
  279. data/app/javascript/hakumi_components/utils/color_helper.js +262 -0
  280. data/app/javascript/stylesheets/_base.scss +9 -0
  281. data/app/javascript/stylesheets/_hakumi_components.scss +1 -0
  282. data/app/javascript/stylesheets/components/_breadcrumb.scss +2 -2
  283. data/app/javascript/stylesheets/components/_calendar.scss +13 -13
  284. data/app/javascript/stylesheets/components/_cascader.scss +5 -5
  285. data/app/javascript/stylesheets/components/_checkbox.scss +9 -11
  286. data/app/javascript/stylesheets/components/_color_picker.scss +11 -11
  287. data/app/javascript/stylesheets/components/_date_picker.scss +4 -4
  288. data/app/javascript/stylesheets/components/_descriptions.scss +2 -2
  289. data/app/javascript/stylesheets/components/_drawer.scss +3 -3
  290. data/app/javascript/stylesheets/components/_dropdown.scss +2 -2
  291. data/app/javascript/stylesheets/components/_flex.scss +1 -1
  292. data/app/javascript/stylesheets/components/_float_button.scss +5 -5
  293. data/app/javascript/stylesheets/components/_form_item.scss +92 -0
  294. data/app/javascript/stylesheets/components/_image.scss +15 -15
  295. data/app/javascript/stylesheets/components/_input.scss +23 -113
  296. data/app/javascript/stylesheets/components/_layout.scss +27 -26
  297. data/app/javascript/stylesheets/components/_menu.scss +15 -15
  298. data/app/javascript/stylesheets/components/_modal.scss +13 -13
  299. data/app/javascript/stylesheets/components/_notification.scss +3 -3
  300. data/app/javascript/stylesheets/components/_popover.scss +1 -1
  301. data/app/javascript/stylesheets/components/_segmented.scss +3 -3
  302. data/app/javascript/stylesheets/components/_select.scss +6 -6
  303. data/app/javascript/stylesheets/components/_slider.scss +1 -1
  304. data/app/javascript/stylesheets/components/_spin.scss +2 -2
  305. data/app/javascript/stylesheets/components/_steps.scss +10 -10
  306. data/app/javascript/stylesheets/components/_switch.scss +11 -10
  307. data/app/javascript/stylesheets/components/_table.scss +6 -6
  308. data/app/javascript/stylesheets/components/_tag.scss +2 -2
  309. data/app/javascript/stylesheets/components/_tooltip.scss +4 -4
  310. data/app/javascript/stylesheets/components/_tree_select.scss +3 -3
  311. data/app/javascript/stylesheets/components/_typography.scss +3 -3
  312. data/app/javascript/stylesheets/components/_upload.scss +4 -4
  313. data/app/services/hakumi_components/component_handler.rb +124 -0
  314. data/app/services/hakumi_components/icon/loader.rb +112 -0
  315. data/app/services/hakumi_components/illustrations/loader.rb +51 -0
  316. data/app/views/hakumi/_admin_panel.html.erb +1 -1
  317. data/app/views/hakumi/_affix.html.erb +1 -1
  318. data/app/views/hakumi/_alert.html.erb +4 -1
  319. data/app/views/hakumi/_confirm.html.erb +1 -1
  320. data/app/views/hakumi/_drawer.html.erb +2 -2
  321. data/app/views/hakumi/_message.html.erb +1 -1
  322. data/app/views/hakumi/_modal.html.erb +1 -1
  323. data/app/views/hakumi/_notification.html.erb +1 -1
  324. data/app/views/hakumi/_popconfirm.html.erb +1 -1
  325. data/app/views/hakumi/_popover.html.erb +1 -1
  326. data/app/views/hakumi/_qr_code.html.erb +1 -1
  327. data/app/views/hakumi/_result.html.erb +1 -1
  328. data/app/views/hakumi/_segmented.html.erb +1 -1
  329. data/app/views/hakumi/_skeleton.html.erb +1 -1
  330. data/app/views/hakumi/_spin.html.erb +1 -1
  331. data/app/views/hakumi/_statistic.html.erb +12 -12
  332. data/app/views/hakumi/_table.html.erb +1 -1
  333. data/app/views/hakumi/_tag.html.erb +1 -1
  334. data/app/views/hakumi/_timeline.html.erb +1 -1
  335. data/app/views/hakumi/_tree.html.erb +1 -1
  336. data/lib/generators/{hakumi → hakumi_components}/install_generator.rb +17 -4
  337. data/lib/hakumi_components/documentation/models.rb +290 -0
  338. data/lib/hakumi_components/documentation/node.rb +73 -0
  339. data/lib/hakumi_components/documentation.rb +141 -64
  340. data/lib/hakumi_components/engine.rb +26 -14
  341. data/lib/hakumi_components/file_size_checker.rb +215 -0
  342. data/lib/hakumi_components/locales/en.yml +115 -0
  343. data/lib/hakumi_components/rails/attribute_introspection.rb +40 -108
  344. data/lib/hakumi_components/rails/model_reflection.rb +154 -0
  345. data/lib/hakumi_components/rails/validation_introspection.rb +26 -74
  346. data/lib/hakumi_components/rails/validation_mapper.rb +149 -202
  347. data/lib/hakumi_components/rails.rb +3 -1
  348. data/lib/hakumi_components/stylesheet_ownership_checker.rb +191 -0
  349. data/lib/hakumi_components/types/form_field.rb +24 -0
  350. data/lib/hakumi_components/types/html.rb +28 -0
  351. data/lib/hakumi_components/types/rendering.rb +10 -0
  352. data/lib/hakumi_components/types/stimulus.rb +19 -0
  353. data/lib/hakumi_components/types/validation.rb +22 -0
  354. data/lib/hakumi_components/types.rb +13 -0
  355. data/lib/hakumi_components/version.rb +3 -2
  356. data/lib/hakumi_components.rb +26 -5
  357. data/lib/tasks/coverage.rake +1 -0
  358. metadata +310 -346
  359. data/app/components/hakumi/admin_panel/component.rb +0 -40
  360. data/app/components/hakumi/affix/component.rb +0 -88
  361. data/app/components/hakumi/alert/component.rb +0 -84
  362. data/app/components/hakumi/anchor/component.rb +0 -80
  363. data/app/components/hakumi/anchor/link/component.rb +0 -34
  364. data/app/components/hakumi/autocomplete/component.html.erb +0 -74
  365. data/app/components/hakumi/autocomplete/component.rb +0 -202
  366. data/app/components/hakumi/avatar/component.rb +0 -91
  367. data/app/components/hakumi/badge/component.rb +0 -85
  368. data/app/components/hakumi/base_component.rb +0 -192
  369. data/app/components/hakumi/breadcrumb/component.rb +0 -27
  370. data/app/components/hakumi/breadcrumb/item/component.html.erb +0 -17
  371. data/app/components/hakumi/breadcrumb/item/component.rb +0 -35
  372. data/app/components/hakumi/button/component.rb +0 -121
  373. data/app/components/hakumi/calendar/component.rb +0 -448
  374. data/app/components/hakumi/card/component.rb +0 -94
  375. data/app/components/hakumi/card/grid/component.html.erb +0 -3
  376. data/app/components/hakumi/card/grid/component.rb +0 -37
  377. data/app/components/hakumi/card/meta/component.html.erb +0 -23
  378. data/app/components/hakumi/card/meta/component.rb +0 -46
  379. data/app/components/hakumi/carousel/component.rb +0 -147
  380. data/app/components/hakumi/cascader/component.html.erb +0 -41
  381. data/app/components/hakumi/cascader/component.rb +0 -119
  382. data/app/components/hakumi/checkbox/component.rb +0 -64
  383. data/app/components/hakumi/checkbox/group/component.html.erb +0 -12
  384. data/app/components/hakumi/checkbox/group/component.rb +0 -64
  385. data/app/components/hakumi/collapse/component.rb +0 -117
  386. data/app/components/hakumi/collapse/panel/component.rb +0 -65
  387. data/app/components/hakumi/color_picker/component.rb +0 -169
  388. data/app/components/hakumi/concerns/form_field.rb +0 -135
  389. data/app/components/hakumi/date_picker/component.rb +0 -140
  390. data/app/components/hakumi/date_picker/range_picker.rb +0 -136
  391. data/app/components/hakumi/date_picker/shared_rendering.rb +0 -199
  392. data/app/components/hakumi/descriptions/component.rb +0 -182
  393. data/app/components/hakumi/descriptions/item/component.rb +0 -28
  394. data/app/components/hakumi/divider/component.rb +0 -66
  395. data/app/components/hakumi/drawer/component.rb +0 -108
  396. data/app/components/hakumi/dropdown/component.rb +0 -97
  397. data/app/components/hakumi/dropdown/item/component.rb +0 -47
  398. data/app/components/hakumi/flex/component.rb +0 -78
  399. data/app/components/hakumi/float_button/back_top/component.rb +0 -79
  400. data/app/components/hakumi/float_button/component.rb +0 -203
  401. data/app/components/hakumi/float_button/group/component.rb +0 -227
  402. data/app/components/hakumi/float_button/group_cluster/component.rb +0 -141
  403. data/app/components/hakumi/grid/col/component.rb +0 -98
  404. data/app/components/hakumi/grid/row/component.rb +0 -79
  405. data/app/components/hakumi/image/component.rb +0 -112
  406. data/app/components/hakumi/image/preview_group/component.rb +0 -70
  407. data/app/components/hakumi/input/component.rb +0 -185
  408. data/app/components/hakumi/input/password/component.rb +0 -95
  409. data/app/components/hakumi/input/text_area/component.rb +0 -131
  410. data/app/components/hakumi/input_number/component.rb +0 -198
  411. data/app/components/hakumi/layout/component.html.erb +0 -1
  412. data/app/components/hakumi/layout/component.rb +0 -21
  413. data/app/components/hakumi/layout/content/component.html.erb +0 -1
  414. data/app/components/hakumi/layout/content/component.rb +0 -19
  415. data/app/components/hakumi/layout/footer/component.html.erb +0 -1
  416. data/app/components/hakumi/layout/footer/component.rb +0 -19
  417. data/app/components/hakumi/layout/header/component.html.erb +0 -1
  418. data/app/components/hakumi/layout/header/component.rb +0 -19
  419. data/app/components/hakumi/layout/sider/component.html.erb +0 -1
  420. data/app/components/hakumi/layout/sider/component.rb +0 -56
  421. data/app/components/hakumi/mentions/component.rb +0 -165
  422. data/app/components/hakumi/menu/component.rb +0 -126
  423. data/app/components/hakumi/menu/group/component.rb +0 -47
  424. data/app/components/hakumi/menu/item/component.rb +0 -47
  425. data/app/components/hakumi/menu/sub_menu/component.rb +0 -92
  426. data/app/components/hakumi/message/component.rb +0 -106
  427. data/app/components/hakumi/modal/component.rb +0 -99
  428. data/app/components/hakumi/modal/confirm/component.html.erb +0 -23
  429. data/app/components/hakumi/modal/confirm/component.rb +0 -46
  430. data/app/components/hakumi/modal/error/component.rb +0 -51
  431. data/app/components/hakumi/modal/info/component.rb +0 -51
  432. data/app/components/hakumi/modal/success/component.rb +0 -51
  433. data/app/components/hakumi/modal/warning/component.rb +0 -56
  434. data/app/components/hakumi/notification/component.rb +0 -126
  435. data/app/components/hakumi/pagination/component.rb +0 -205
  436. data/app/components/hakumi/popconfirm/component.rb +0 -72
  437. data/app/components/hakumi/popover/component.rb +0 -132
  438. data/app/components/hakumi/progress/component.rb +0 -565
  439. data/app/components/hakumi/qr_code/component.rb +0 -339
  440. data/app/components/hakumi/radio/component.rb +0 -80
  441. data/app/components/hakumi/radio/group/component.rb +0 -132
  442. data/app/components/hakumi/result/component.rb +0 -125
  443. data/app/components/hakumi/segmented/component.rb +0 -269
  444. data/app/components/hakumi/select/component.rb +0 -125
  445. data/app/components/hakumi/skeleton/avatar/component.rb +0 -66
  446. data/app/components/hakumi/skeleton/button/component.rb +0 -59
  447. data/app/components/hakumi/skeleton/component.rb +0 -200
  448. data/app/components/hakumi/skeleton/image/component.rb +0 -80
  449. data/app/components/hakumi/skeleton/input/component.rb +0 -51
  450. data/app/components/hakumi/skeleton/node/component.rb +0 -43
  451. data/app/components/hakumi/slider/component.rb +0 -228
  452. data/app/components/hakumi/space/compact/component.html.erb +0 -3
  453. data/app/components/hakumi/space/compact/component.rb +0 -36
  454. data/app/components/hakumi/space/component.rb +0 -73
  455. data/app/components/hakumi/spin/component.rb +0 -209
  456. data/app/components/hakumi/splitter/component.html.erb +0 -3
  457. data/app/components/hakumi/splitter/component.rb +0 -38
  458. data/app/components/hakumi/splitter/panel/component.html.erb +0 -3
  459. data/app/components/hakumi/splitter/panel/component.rb +0 -73
  460. data/app/components/hakumi/statistic/component.rb +0 -287
  461. data/app/components/hakumi/steps/component.rb +0 -145
  462. data/app/components/hakumi/steps/item/component.rb +0 -91
  463. data/app/components/hakumi/switch/component.rb +0 -124
  464. data/app/components/hakumi/table/column/component.rb +0 -80
  465. data/app/components/hakumi/table/component.rb +0 -731
  466. data/app/components/hakumi/table/concerns/columns.rb +0 -219
  467. data/app/components/hakumi/table/concerns/editable.rb +0 -121
  468. data/app/components/hakumi/table/concerns/ellipsis.rb +0 -63
  469. data/app/components/hakumi/table/concerns/fixed_columns.rb +0 -87
  470. data/app/components/hakumi/tabs/component.rb +0 -196
  471. data/app/components/hakumi/tabs/item/component.rb +0 -87
  472. data/app/components/hakumi/tag/component.rb +0 -187
  473. data/app/components/hakumi/timeline/component.html.erb +0 -7
  474. data/app/components/hakumi/timeline/component.rb +0 -168
  475. data/app/components/hakumi/timeline/item/component.rb +0 -137
  476. data/app/components/hakumi/tooltip/component.rb +0 -121
  477. data/app/components/hakumi/tour/component.rb +0 -158
  478. data/app/components/hakumi/transfer/component.html.erb +0 -173
  479. data/app/components/hakumi/transfer/component.rb +0 -245
  480. data/app/components/hakumi/tree/component.rb +0 -523
  481. data/app/components/hakumi/tree_select/component.rb +0 -261
  482. data/app/components/hakumi/typography/base_component.rb +0 -109
  483. data/app/components/hakumi/typography/link/component.rb +0 -34
  484. data/app/components/hakumi/typography/text/component.rb +0 -8
  485. data/app/components/hakumi/typography/title/component.rb +0 -29
  486. data/app/components/hakumi/upload/component.html.erb +0 -117
  487. data/app/components/hakumi/upload/component.rb +0 -193
  488. data/app/form_builders/hakumi/form_builder.rb +0 -482
  489. data/app/helpers/hakumi/form_helper.rb +0 -39
  490. data/app/services/hakumi/component_handler.rb +0 -53
  491. data/app/services/hakumi/icon/loader.rb +0 -95
  492. data/app/services/hakumi/illustrations/loader.rb +0 -43
  493. data/sig/action_view/tag_builder.rbs +0 -24
  494. data/sig/active_support/concern_patch.rbs +0 -7
  495. data/sig/generators/hakumi/install_generator.rbs +0 -11
  496. data/sig/hakumi/admin_panel/component.rbs +0 -28
  497. data/sig/hakumi/affix/component.rbs +0 -44
  498. data/sig/hakumi/alert/component.rbs +0 -64
  499. data/sig/hakumi/anchor/component.rbs +0 -45
  500. data/sig/hakumi/anchor/link/component.rbs +0 -31
  501. data/sig/hakumi/autocomplete/component.rbs +0 -68
  502. data/sig/hakumi/avatar/component.rbs +0 -44
  503. data/sig/hakumi/badge/component.rbs +0 -41
  504. data/sig/hakumi/base_component.rbs +0 -82
  505. data/sig/hakumi/breadcrumb/component.rbs +0 -21
  506. data/sig/hakumi/breadcrumb/item/component.rbs +0 -36
  507. data/sig/hakumi/button/component.rbs +0 -56
  508. data/sig/hakumi/calendar/component.rbs +0 -41
  509. data/sig/hakumi/card/component.rbs +0 -50
  510. data/sig/hakumi/card/grid/component.rbs +0 -21
  511. data/sig/hakumi/card/meta/component.rbs +0 -25
  512. data/sig/hakumi/carousel/component.rbs +0 -88
  513. data/sig/hakumi/cascader/component.rbs +0 -52
  514. data/sig/hakumi/checkbox/component.rbs +0 -46
  515. data/sig/hakumi/checkbox/group/component.rbs +0 -34
  516. data/sig/hakumi/collapse/component.rbs +0 -57
  517. data/sig/hakumi/collapse/panel/component.rbs +0 -47
  518. data/sig/hakumi/color_picker/component.rbs +0 -80
  519. data/sig/hakumi/concerns/form_field.rbs +0 -89
  520. data/sig/hakumi/container/component.rbs +0 -37
  521. data/sig/hakumi/date_picker/component.rbs +0 -72
  522. data/sig/hakumi/date_picker/range_picker.rbs +0 -68
  523. data/sig/hakumi/date_picker/shared_rendering.rbs +0 -41
  524. data/sig/hakumi/descriptions/component.rbs +0 -59
  525. data/sig/hakumi/descriptions/item/component.rbs +0 -31
  526. data/sig/hakumi/divider/component.rbs +0 -39
  527. data/sig/hakumi/drawer/component.rbs +0 -66
  528. data/sig/hakumi/dropdown/component.rbs +0 -45
  529. data/sig/hakumi/dropdown/divider/component.rbs +0 -11
  530. data/sig/hakumi/dropdown/item/component.rbs +0 -45
  531. data/sig/hakumi/empty/component.rbs +0 -40
  532. data/sig/hakumi/flex/component.rbs +0 -47
  533. data/sig/hakumi/float_button/back_top/component.rbs +0 -45
  534. data/sig/hakumi/float_button/component.rbs +0 -80
  535. data/sig/hakumi/float_button/group/component.rbs +0 -95
  536. data/sig/hakumi/float_button/group_cluster/component.rbs +0 -60
  537. data/sig/hakumi/form/item/component.rbs +0 -39
  538. data/sig/hakumi/form_builder.rbs +0 -37
  539. data/sig/hakumi/grid/col/component.rbs +0 -50
  540. data/sig/hakumi/grid/row/component.rbs +0 -46
  541. data/sig/hakumi/icon/component.rbs +0 -56
  542. data/sig/hakumi/image/component.rbs +0 -56
  543. data/sig/hakumi/image/preview_group/component.rbs +0 -28
  544. data/sig/hakumi/input/component.rbs +0 -71
  545. data/sig/hakumi/input/password/component.rbs +0 -27
  546. data/sig/hakumi/input/text_area/component.rbs +0 -42
  547. data/sig/hakumi/input_number/component.rbs +0 -85
  548. data/sig/hakumi/layout/component.rbs +0 -21
  549. data/sig/hakumi/layout/content/component.rbs +0 -19
  550. data/sig/hakumi/layout/footer/component.rbs +0 -19
  551. data/sig/hakumi/layout/header/component.rbs +0 -19
  552. data/sig/hakumi/layout/sider/component.rbs +0 -19
  553. data/sig/hakumi/mentions/component.rbs +0 -75
  554. data/sig/hakumi/menu/component.rbs +0 -52
  555. data/sig/hakumi/menu/divider/component.rbs +0 -11
  556. data/sig/hakumi/menu/group/component.rbs +0 -20
  557. data/sig/hakumi/menu/item/component.rbs +0 -42
  558. data/sig/hakumi/menu/sub_menu/component.rbs +0 -37
  559. data/sig/hakumi/message/component.rbs +0 -50
  560. data/sig/hakumi/modal/component.rbs +0 -76
  561. data/sig/hakumi/modal/confirm/component.rbs +0 -32
  562. data/sig/hakumi/modal/error/component.rbs +0 -27
  563. data/sig/hakumi/modal/info/component.rbs +0 -27
  564. data/sig/hakumi/modal/success/component.rbs +0 -27
  565. data/sig/hakumi/modal/warning/component.rbs +0 -27
  566. data/sig/hakumi/notification/component.rbs +0 -64
  567. data/sig/hakumi/pagination/component.rbs +0 -113
  568. data/sig/hakumi/popconfirm/component.rbs +0 -52
  569. data/sig/hakumi/popover/component.rbs +0 -66
  570. data/sig/hakumi/progress/component.rbs +0 -201
  571. data/sig/hakumi/qr_code/component.rbs +0 -111
  572. data/sig/hakumi/radio/component.rbs +0 -55
  573. data/sig/hakumi/radio/group/component.rbs +0 -71
  574. data/sig/hakumi/rails/attribute_introspection.rbs +0 -16
  575. data/sig/hakumi/rails/validation_introspection.rbs +0 -18
  576. data/sig/hakumi/rails/validation_mapper.rbs +0 -53
  577. data/sig/hakumi/rails.rbs +0 -6
  578. data/sig/hakumi/rate/component.rbs +0 -56
  579. data/sig/hakumi/result/component.rbs +0 -65
  580. data/sig/hakumi/segmented/component.rbs +0 -72
  581. data/sig/hakumi/select/component.rbs +0 -73
  582. data/sig/hakumi/skeleton/avatar/component.rbs +0 -23
  583. data/sig/hakumi/skeleton/button/component.rbs +0 -24
  584. data/sig/hakumi/skeleton/component.rbs +0 -76
  585. data/sig/hakumi/skeleton/image/component.rbs +0 -22
  586. data/sig/hakumi/skeleton/input/component.rbs +0 -23
  587. data/sig/hakumi/skeleton/node/component.rbs +0 -21
  588. data/sig/hakumi/slider/component.rbs +0 -85
  589. data/sig/hakumi/space/compact/component.rbs +0 -21
  590. data/sig/hakumi/space/component.rbs +0 -47
  591. data/sig/hakumi/spin/component.rbs +0 -77
  592. data/sig/hakumi/splitter/component.rbs +0 -27
  593. data/sig/hakumi/splitter/panel/component.rbs +0 -36
  594. data/sig/hakumi/statistic/component.rbs +0 -97
  595. data/sig/hakumi/steps/component.rbs +0 -82
  596. data/sig/hakumi/steps/item/component.rbs +0 -29
  597. data/sig/hakumi/switch/component.rbs +0 -52
  598. data/sig/hakumi/table/column/component.rbs +0 -57
  599. data/sig/hakumi/table/column_group/component.rbs +0 -20
  600. data/sig/hakumi/table/component.rbs +0 -279
  601. data/sig/hakumi/table/concerns/columns.rbs +0 -95
  602. data/sig/hakumi/table/concerns/editable.rbs +0 -40
  603. data/sig/hakumi/table/concerns/ellipsis.rbs +0 -27
  604. data/sig/hakumi/table/concerns/fixed_columns.rbs +0 -33
  605. data/sig/hakumi/tabs/component.rbs +0 -66
  606. data/sig/hakumi/tabs/item/component.rbs +0 -29
  607. data/sig/hakumi/tag/component.rbs +0 -86
  608. data/sig/hakumi/tag/group/component.rbs +0 -24
  609. data/sig/hakumi/time_picker/component.rbs +0 -72
  610. data/sig/hakumi/timeline/component.rbs +0 -61
  611. data/sig/hakumi/timeline/item/component.rbs +0 -70
  612. data/sig/hakumi/tooltip/component.rbs +0 -73
  613. data/sig/hakumi/tour/component.rbs +0 -84
  614. data/sig/hakumi/transfer/component.rbs +0 -75
  615. data/sig/hakumi/tree/component.rbs +0 -126
  616. data/sig/hakumi/tree_select/component.rbs +0 -122
  617. data/sig/hakumi/typography/base_component.rbs +0 -57
  618. data/sig/hakumi/typography/link/component.rbs +0 -28
  619. data/sig/hakumi/typography/paragraph/component.rbs +0 -13
  620. data/sig/hakumi/typography/title/component.rbs +0 -28
  621. data/sig/hakumi/upload/component.rbs +0 -78
  622. data/sig/hakumi.rbs +0 -96
  623. data/sig/rails/active_model/validations/comparison_validator.rbs +0 -6
  624. data/sig/rails.rbs +0 -18
  625. data/sig/view_component/base.rbs +0 -28
  626. /data/app/components/{hakumi → hakumi_components}/affix/component.html.erb +0 -0
  627. /data/app/components/{hakumi → hakumi_components}/anchor/component.html.erb +0 -0
  628. /data/app/components/{hakumi → hakumi_components}/breadcrumb/component.html.erb +0 -0
  629. /data/app/components/{hakumi → hakumi_components}/dropdown/component.html.erb +0 -0
  630. /data/app/components/{hakumi → hakumi_components}/dropdown/item/component.html.erb +0 -0
  631. /data/app/components/{hakumi → hakumi_components}/icon/component.html.erb +0 -0
  632. /data/app/components/{hakumi → hakumi_components}/menu/component.html.erb +0 -0
  633. /data/app/components/{hakumi → hakumi_components}/menu/group/component.html.erb +0 -0
  634. /data/app/components/{hakumi → hakumi_components}/menu/item/component.html.erb +0 -0
  635. /data/app/components/{hakumi → hakumi_components}/menu/sub_menu/component.html.erb +0 -0
  636. /data/app/components/{hakumi → hakumi_components}/message/component.html.erb +0 -0
  637. /data/app/components/{hakumi → hakumi_components}/qr_code/component.html.erb +0 -0
  638. /data/app/components/{hakumi → hakumi_components}/result/component.html.erb +0 -0
  639. /data/app/components/{hakumi → hakumi_components}/skeleton/avatar/component.html.erb +0 -0
  640. /data/app/components/{hakumi → hakumi_components}/skeleton/button/component.html.erb +0 -0
  641. /data/app/components/{hakumi → hakumi_components}/skeleton/component.html.erb +0 -0
  642. /data/app/components/{hakumi → hakumi_components}/skeleton/input/component.html.erb +0 -0
  643. /data/app/components/{hakumi → hakumi_components}/skeleton/node/component.html.erb +0 -0
  644. /data/app/components/{hakumi → hakumi_components}/spin/component.html.erb +0 -0
  645. /data/app/components/{hakumi → hakumi_components}/statistic/component.html.erb +0 -0
  646. /data/app/components/{hakumi → hakumi_components}/steps/item/component.html.erb +0 -0
  647. /data/app/components/{hakumi → hakumi_components}/tour/component.html.erb +0 -0
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Radio
5
- class Component < Hakumi::BaseComponent
6
- include Hakumi::Concerns::FormField
7
-
8
- SIZES: Array[hakumi_size_standard]
9
-
10
- @name: String
11
- @value: (String | Integer | Float)?
12
- @text: String?
13
- @label: String?
14
- @caption: String?
15
- @checked: bool
16
- @disabled: bool
17
- @size: hakumi_size_standard
18
- @id: String
19
- @auto_focus: bool
20
- @required: bool
21
- @standalone: bool
22
- @errors: Array[String]
23
- @html_options: hakumi_html_options
24
-
25
- def initialize: (
26
- name: String,
27
- ?value: (String | Integer | Float)?,
28
- ?text: String?,
29
- ?label: String?,
30
- ?caption: String?,
31
- ?checked: bool,
32
- ?disabled: bool,
33
- ?size: hakumi_size_standard,
34
- ?id: String?,
35
- ?auto_focus: bool,
36
- ?required: bool,
37
- ?standalone: bool,
38
- ?errors: (Array[String] | String)?,
39
- **hakumi_html_options html_options
40
- ) -> void
41
-
42
- def wrapper_classes: () -> String
43
-
44
- def radio_classes: () -> String
45
-
46
- def data_controllers: () -> String
47
-
48
- def label_text: () -> String?
49
-
50
- private
51
-
52
- def validate_props!: () -> void
53
- end
54
- end
55
- end
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Radio
5
- module Group
6
- class Component < Hakumi::BaseComponent
7
- include Hakumi::Concerns::FormField
8
-
9
- type radio_variant = :default | :button | :solid
10
- type radio_direction = :horizontal | :vertical
11
- type radio_option = { label: String, value: (String | Integer | Float), disabled: bool }
12
-
13
- SIZES: Array[hakumi_size_standard]
14
- VARIANTS: Array[radio_variant]
15
- DIRECTIONS: Array[radio_direction]
16
-
17
- @name: String
18
- @value: (String | Integer | Float)?
19
- @options: Array[radio_option]
20
- @label: String?
21
- @caption: String?
22
- @variant: radio_variant
23
- @direction: radio_direction
24
- @size: hakumi_size_standard
25
- @disabled: bool
26
- @standalone: bool
27
- @required: bool
28
- @errors: Array[String]
29
- @html_options: hakumi_html_options
30
-
31
- def initialize: (
32
- ?name: String?,
33
- ?value: (String | Integer | Float)?,
34
- ?options: Array[Hash[Symbol, untyped] | String],
35
- ?label: String?,
36
- ?caption: String?,
37
- ?variant: radio_variant,
38
- ?direction: radio_direction,
39
- ?size: hakumi_size_standard,
40
- ?disabled: bool,
41
- ?standalone: bool,
42
- ?required: bool,
43
- ?errors: (Array[String] | String)?,
44
- **hakumi_html_options html_options
45
- ) -> void
46
-
47
- def wrapper_attributes: () -> hakumi_html_options
48
-
49
- def normalized_options: () -> Array[radio_option]
50
-
51
- def option_checked?: ((String | Integer | Float) option_value) -> bool
52
-
53
- def option_disabled?: (radio_option option) -> bool
54
-
55
- def button_wrapper_classes: (radio_option option) -> String
56
-
57
- def option_id: (Integer index) -> String
58
-
59
- def button_group?: () -> bool
60
-
61
- private
62
-
63
- def wrapper_classes: () -> String
64
-
65
- def normalize_options: (Array[Hash[Symbol, untyped] | String] options) -> Array[radio_option]
66
-
67
- def validate_props!: () -> void
68
- end
69
- end
70
- end
71
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Rails
5
- class AttributeIntrospection
6
- def self.human_attribute_name: (Object object, Symbol attribute) -> String?
7
- def self.placeholder: (Object object, Symbol attribute) -> String?
8
- def self.hint: (Object object, Symbol attribute) -> String?
9
- def self.input_type_from_column: (Object object, Symbol attribute) -> Symbol
10
- def self.column_for: (Object object, Symbol attribute) -> Object?
11
- def self.numeric_column?: (Object object, Symbol attribute) -> bool
12
- def self.text_column?: (Object object, Symbol attribute) -> bool
13
- def self.column_limit: (Object object, Symbol attribute) -> Integer?
14
- end
15
- end
16
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Rails
5
- class ValidationIntrospection
6
- def self.required?: (Object object, Symbol attribute) -> bool
7
- def self.maxlength: (Object object, Symbol attribute) -> Integer?
8
- def self.minlength: (Object object, Symbol attribute) -> Integer?
9
- def self.pattern: (Object object, Symbol attribute) -> String?
10
- def self.numericality_constraints: (Object object, Symbol attribute) -> Hash[Symbol, Object]
11
- def self.email_field?: (Object object, Symbol attribute) -> bool
12
- def self.url_field?: (Object object, Symbol attribute) -> bool
13
- def self.has_validators?: (Object object) -> bool
14
- def self.validators_for: (Object object, Symbol attribute) -> Array[Object]
15
- def self.validator_options: (Object validator) -> Hash[Symbol, Object]
16
- end
17
- end
18
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Rails
5
- class ValidationMapper
6
- type validator = _Validator
7
- type model_object = _ModelObject
8
-
9
- interface _Validator
10
- def options: () -> Hash[Symbol, untyped]
11
- end
12
-
13
- interface _ModelObject
14
- def errors: () -> _Errors
15
- def class: () -> Class
16
- end
17
-
18
- interface _Errors
19
- def generate_message: (Symbol attribute, Symbol type, Hash[Symbol, untyped] options) -> String
20
- def full_message: (Symbol attribute, String message) -> String
21
- def respond_to?: (Symbol method) -> bool
22
- end
23
-
24
- # Public methods
25
- def self.to_frontend_rules: (untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
26
- def self.merge_rules: (Array[Hash[Symbol, untyped]]? manual_rules, Array[Hash[Symbol, untyped]] auto_rules) -> Array[Hash[Symbol, untyped]]
27
-
28
- # Private methods
29
- def self.extract_rule_type: (Hash[Symbol, untyped] rule) -> Symbol?
30
- def self.map_validator: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]?
31
- def self.map_presence: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
32
- def self.map_length: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
33
- def self.map_numericality: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
34
- def self.map_format: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
35
- def self.map_confirmation: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
36
- def self.map_comparison: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
37
- def self.map_inclusion: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
38
- def self.map_exclusion: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
39
- def self.map_acceptance: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
40
- def self.map_absence: (validator validator, untyped object, Symbol attribute) -> Array[Hash[Symbol, untyped]]
41
- def self.email_regex?: (String regex_source) -> bool
42
- def self.url_regex?: (String regex_source) -> bool
43
- def self.humanize: (Symbol attribute) -> String
44
- def self.validation_message: (untyped object, Symbol attribute, Symbol type, Hash[Symbol, untyped] options, Hash[Symbol, untyped] validator_options) -> String
45
- def self.anonymous_class?: (untyped object) -> bool
46
- def self.build_comparison_target: (untyped target, untyped object) -> Hash[Symbol, untyped]?
47
- def self.comparison_message_options: (untyped target, untyped object, Hash[Symbol, untyped] comparison) -> Hash[Symbol, untyped]
48
- def self.resolve_comparison_value: (untyped target, untyped object) -> untyped
49
- def self.fallback_message: (Symbol attribute, Symbol type, Hash[Symbol, untyped] options, Hash[Symbol, untyped] validator_options) -> String
50
- def self.fallback_message_text: (Symbol type, Hash[Symbol, untyped] options) -> String
51
- end
52
- end
53
- end
data/sig/hakumi/rails.rbs DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Rails
5
- end
6
- end
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Rate
5
- class Component < Hakumi::BaseComponent
6
- include Hakumi::Concerns::FormField
7
-
8
- type star_state = :full | :half | :zero
9
-
10
- @name: String
11
- @label: String?
12
- @caption: String?
13
- @value: untyped
14
- @default_value: Numeric
15
- @count: Integer
16
- @allow_half: bool
17
- @allow_clear: bool
18
- @disabled: bool
19
- @readonly: bool
20
- @tooltips: Array[String]
21
- @character: String?
22
- @required: bool
23
- @standalone: bool
24
- @errors: Array[String]
25
- @html_options: hakumi_html_options
26
-
27
- def initialize: (
28
- ?name: String?,
29
- ?label: String?,
30
- ?caption: String?,
31
- ?value: untyped,
32
- ?default_value: Numeric,
33
- ?count: Integer,
34
- ?allow_half: bool,
35
- ?allow_clear: bool,
36
- ?disabled: bool,
37
- ?readonly: bool,
38
- ?tooltips: Array[String],
39
- ?character: String?,
40
- ?required: bool,
41
- ?standalone: bool,
42
- ?errors: (Array[String] | String),
43
- **hakumi_html_options html_options
44
- ) -> void
45
-
46
- def current_value: () -> Float
47
- def rate_classes: () -> String
48
- def rate_wrapper_attributes: () -> hakumi_html_options
49
- def star_state: (Integer index) -> star_state
50
- def star_classes: (star_state state) -> String
51
- def tooltip_for: (Integer index) -> String?
52
- def character_content: () -> String?
53
- def input_attributes: () -> hakumi_html_options
54
- end
55
- end
56
- end
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Result
5
- class Component < Hakumi::BaseComponent
6
- type result_status = :success | :info | :warning | :error
7
-
8
- STATUSES: Array[String]
9
- DEFAULT_TITLES: Hash[String, String]
10
- DEFAULT_ICON_NAME: String
11
- STATUS_ICON_MAP: Hash[String, Hash[Symbol, (String | Symbol)]]
12
- STATUS_ICON_SIZE: Integer
13
-
14
- # Extracts locals from controller params for dynamic rendering
15
- # Params is typically ActionController::Parameters but we use untyped for flexibility
16
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
17
-
18
- @status: String
19
- @title: String?
20
- @sub_title: String?
21
- @icon: (hakumi_icon | false)?
22
- @extra: untyped # Can be String, ViewComponent, or any renderable content
23
- @html_options: hakumi_html_options
24
-
25
- def initialize: (
26
- ?status: result_status?,
27
- ?title: String?,
28
- ?sub_title: String?,
29
- ?icon: (hakumi_icon | false)?,
30
- ?extra: untyped, # Extra content slot - can be any renderable
31
- **hakumi_html_options html_options
32
- ) -> void
33
-
34
- def wrapper_attributes: () -> hakumi_html_options
35
-
36
- def icon_present?: () -> bool
37
-
38
- def icon_content: () -> String?
39
-
40
- def title_content: () -> String?
41
-
42
- def sub_title_content: () -> String?
43
-
44
- def extra_content: () -> String?
45
-
46
- def content_present?: () -> bool
47
-
48
- def extra_present?: () -> bool
49
-
50
- def title_present?: () -> bool
51
-
52
- def sub_title_present?: () -> bool
53
-
54
- private
55
-
56
- def validate_props!: () -> void
57
-
58
- def wrapper_classes: () -> String
59
-
60
- def status_icon_component: () -> Hakumi::Icon::Component?
61
-
62
- def default_icon: () -> String
63
- end
64
- end
65
- end
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Segmented
5
- class Component < Hakumi::BaseComponent
6
- # Segmented option hash structure
7
- type segmented_option = {
8
- label: (String | untyped), # String or ViewComponent
9
- value: (String | Integer | Symbol),
10
- disabled: bool,
11
- icon: (String | Symbol | untyped)?, # String, Symbol, or ViewComponent
12
- class_name: String?,
13
- aria_label: String?
14
- }
15
-
16
- SIZES: Array[hakumi_size_standard]
17
-
18
- @options: Array[segmented_option]
19
- @value: (String | nil)
20
- @disabled: bool
21
- @block: bool
22
- @vertical: bool
23
- @round: bool
24
- @name: String
25
- @size: hakumi_size_standard
26
- @aria_label: (String | nil)
27
- @html_options: hakumi_html_options
28
-
29
- # Class methods for controller integration
30
- def self.extract_controller_locals: (Hash[Symbol, untyped] params) -> Hash[Symbol, untyped]
31
- def self.parse_options_param: (untyped options) -> untyped
32
- def self.truthy_param?: (untyped value) -> bool
33
-
34
- def initialize: (
35
- ?options: Array[untyped],
36
- ?value: (String | Integer | Symbol)?,
37
- ?default_value: (String | Integer | Symbol)?,
38
- ?disabled: bool,
39
- ?block: bool,
40
- ?vertical: bool,
41
- ?round: bool,
42
- ?name: String?,
43
- ?size: hakumi_size_standard,
44
- ?aria_label: String?,
45
- **hakumi_html_options html_options
46
- ) -> void
47
-
48
- def wrapper_attributes: () -> hakumi_html_options
49
- def normalized_options: () -> Array[segmented_option]
50
- def option_classes: (segmented_option option) -> String
51
- def option_data_attributes: (segmented_option option) -> hakumi_html_options
52
- def option_input_attributes: (segmented_option option, Integer index) -> hakumi_html_options
53
- def option_selected?: (segmented_option option) -> bool
54
- def option_disabled?: (segmented_option option) -> bool
55
- def option_id: (Integer index) -> String
56
- def option_label: (segmented_option option) -> (String | nil)
57
- def option_icon: (segmented_option option) -> (String | nil)
58
-
59
- private
60
-
61
- def validate_props!: () -> void
62
- def wrapper_classes: () -> String
63
- def normalize_options: (Array[untyped] options) -> Array[segmented_option]
64
- def option_aria_label: (segmented_option option) -> (String | nil)
65
- def icon_only_option?: (segmented_option option) -> bool
66
- def data_attributes: () -> hakumi_html_options
67
- def normalize_value: ((String | Integer | Symbol)? value, (String | Integer | Symbol)? default_value) -> (String | nil)
68
- def normalize_size: ((String | Symbol)? size) -> (Symbol | nil)
69
- def normalize_string: (untyped value) -> (String | nil)
70
- end
71
- end
72
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Select
5
- class Component < Hakumi::BaseComponent
6
- include Hakumi::Concerns::FormField
7
-
8
- type select_option = [String, (String | Integer | Float)]
9
-
10
- SIZES: Array[hakumi_size_standard]
11
- VARIANTS: Array[hakumi_variant_select]
12
- TRIGGERS: Array[hakumi_trigger]
13
-
14
- @name: String
15
- @options: Array[select_option | String | Integer]
16
- @label: String?
17
- @caption: String?
18
- @value: (String | Integer | Float)?
19
- @placeholder: String?
20
- @size: hakumi_size_standard
21
- @variant: hakumi_variant_select
22
- @trigger: hakumi_trigger
23
- @icon: hakumi_icon?
24
- @disabled: bool
25
- @required: bool
26
- @allow_clear: bool
27
- @show_search: bool
28
- @standalone: bool
29
- @errors: Array[String]
30
- @html_options: hakumi_html_options
31
-
32
- attr_reader variant: hakumi_variant_select
33
- attr_reader trigger: hakumi_trigger
34
- attr_reader icon: hakumi_icon?
35
-
36
- def initialize: (
37
- ?name: String?,
38
- ?options: Array[select_option | String | Integer],
39
- ?label: String?,
40
- ?caption: String?,
41
- ?value: (String | Integer | Float)?,
42
- ?placeholder: String?,
43
- ?size: hakumi_size_standard,
44
- ?variant: hakumi_variant_select,
45
- ?trigger: hakumi_trigger,
46
- ?icon: hakumi_icon?,
47
- ?disabled: bool,
48
- ?required: bool,
49
- ?allow_clear: bool,
50
- ?show_search: bool,
51
- ?standalone: bool,
52
- ?errors: (Array[String] | String)?,
53
- **hakumi_html_options html_options
54
- ) -> void
55
-
56
- private
57
-
58
- def validate_props!: () -> void
59
-
60
- def select_wrapper_classes: () -> String
61
-
62
- def borderless?: () -> bool
63
-
64
- def hover_trigger?: () -> bool
65
-
66
- def wrapper_attributes: () -> hakumi_html_options
67
-
68
- def selected_label: () -> (String | Integer | Float)?
69
-
70
- def formatted_options: () -> Array[select_option]
71
- end
72
- end
73
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Skeleton
5
- module Avatar
6
- class Component < Hakumi::BaseComponent
7
- @shape: Symbol
8
- @size: (Symbol | Integer)
9
- @active: bool
10
- @html_options: hakumi_html_options
11
-
12
- def initialize: (?shape: Symbol, ?size: (Symbol | Integer), ?active: bool, **hakumi_html_options html_options) -> void
13
-
14
- def call: () -> String
15
-
16
- private
17
-
18
- def wrapper_classes: () -> String
19
- def wrapper_attributes: () -> hakumi_html_options
20
- end
21
- end
22
- end
23
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Skeleton
5
- module Button
6
- class Component < Hakumi::BaseComponent
7
- @shape: Symbol
8
- @size: (Symbol | Integer)
9
- @active: bool
10
- @block: bool
11
- @html_options: hakumi_html_options
12
-
13
- def initialize: (?shape: Symbol, ?size: (Symbol | Integer), ?active: bool, ?block: bool, **hakumi_html_options html_options) -> void
14
-
15
- def call: () -> String
16
-
17
- private
18
-
19
- def wrapper_classes: () -> String
20
- def wrapper_attributes: () -> hakumi_html_options
21
- end
22
- end
23
- end
24
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Skeleton
5
- class Component < Hakumi::BaseComponent
6
- type skeleton_avatar_size = :small | :default | :large
7
- type skeleton_avatar_shape = :circle | :square
8
- type skeleton_config = Hash[Symbol, untyped]
9
-
10
- AVATAR_SIZES: Array[skeleton_avatar_size]
11
- AVATAR_SHAPES: Array[skeleton_avatar_shape]
12
- DEFAULT_PARAGRAPH_ROWS: Integer
13
-
14
- # Extracts locals from controller params for dynamic rendering
15
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
16
-
17
- def self.normalize_config_param: (untyped value) -> (skeleton_config | bool)?
18
-
19
- @loading: bool
20
- @active: bool
21
- @round: bool
22
- @avatar: skeleton_config?
23
- @title: skeleton_config?
24
- @paragraph: skeleton_config?
25
- @html_options: hakumi_html_options
26
-
27
- def initialize: (
28
- ?loading: bool,
29
- ?active: bool,
30
- ?avatar: skeleton_config | bool,
31
- ?title: skeleton_config | bool,
32
- ?paragraph: skeleton_config | bool,
33
- ?round: bool,
34
- **hakumi_html_options html_options
35
- ) -> void
36
-
37
- def loading?: () -> bool
38
-
39
- def wrapper_attributes: () -> hakumi_html_options
40
-
41
- def avatar?: () -> bool
42
-
43
- def title?: () -> bool
44
-
45
- def paragraph?: () -> bool
46
-
47
- def avatar_classes: () -> String
48
-
49
- def avatar_style: () -> String?
50
-
51
- def title_style: () -> String?
52
-
53
- def paragraph_row_widths: () -> Array[String]
54
-
55
- def paragraph_row_style: (String? width) -> String?
56
-
57
- def paragraph_rows: () -> Integer
58
-
59
- private
60
-
61
- def normalize_config: (untyped value) -> skeleton_config?
62
-
63
- def wrapper_classes: () -> String
64
-
65
- def avatar_size: () -> (skeleton_avatar_size | Numeric)
66
-
67
- def avatar_shape: () -> skeleton_avatar_shape
68
-
69
- def default_paragraph_widths: (Integer rows) -> Array[String]
70
-
71
- def validate_props!: () -> void
72
-
73
- def validate_inclusion_value: (Symbol name, untyped value, Array[untyped] allowed) -> void
74
- end
75
- end
76
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Skeleton
5
- module Image
6
- class Component < Hakumi::BaseComponent
7
- @shape: Symbol
8
- @active: bool
9
- @html_options: hakumi_html_options
10
-
11
- def initialize: (?shape: Symbol, ?active: bool, **hakumi_html_options html_options) -> void
12
-
13
- def call: () -> String
14
-
15
- private
16
-
17
- def wrapper_classes: () -> String
18
- def wrapper_attributes: () -> hakumi_html_options
19
- end
20
- end
21
- end
22
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Skeleton
5
- module Input
6
- class Component < Hakumi::BaseComponent
7
- @size: (Symbol | Integer)
8
- @active: bool
9
- @block: bool
10
- @html_options: hakumi_html_options
11
-
12
- def initialize: (?size: (Symbol | Integer), ?active: bool, ?block: bool, **hakumi_html_options html_options) -> void
13
-
14
- def call: () -> String
15
-
16
- private
17
-
18
- def wrapper_classes: () -> String
19
- def wrapper_attributes: () -> hakumi_html_options
20
- end
21
- end
22
- end
23
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Skeleton
5
- module Node
6
- class Component < Hakumi::BaseComponent
7
- @active: bool
8
- @html_options: hakumi_html_options
9
-
10
- def initialize: (?active: bool, **hakumi_html_options html_options) -> void
11
-
12
- def call: () -> String
13
-
14
- private
15
-
16
- def wrapper_classes: () -> String
17
- def wrapper_attributes: () -> hakumi_html_options
18
- end
19
- end
20
- end
21
- end