hakumi_components 0.1.18.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 (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -2
  3. data/README.md +208 -381
  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_components/admin_panel/component.rb +19 -9
  7. data/app/components/hakumi_components/affix/component.rb +54 -30
  8. data/app/components/hakumi_components/alert/component.html.erb +2 -2
  9. data/app/components/hakumi_components/alert/component.rb +68 -18
  10. data/app/components/hakumi_components/anchor/component.rb +35 -27
  11. data/app/components/hakumi_components/anchor/link/component.html.erb +1 -1
  12. data/app/components/hakumi_components/anchor/link/component.rb +28 -9
  13. data/app/components/hakumi_components/autocomplete/component.html.erb +86 -66
  14. data/app/components/hakumi_components/autocomplete/component.rb +115 -89
  15. data/app/components/hakumi_components/avatar/component.rb +45 -12
  16. data/app/components/hakumi_components/badge/component.rb +99 -45
  17. data/app/components/hakumi_components/base_component.rb +290 -91
  18. data/app/components/hakumi_components/breadcrumb/component.rb +16 -5
  19. data/app/components/hakumi_components/breadcrumb/item/component.html.erb +5 -5
  20. data/app/components/hakumi_components/breadcrumb/item/component.rb +56 -8
  21. data/app/components/hakumi_components/breadcrumb/item/menu_entry.rb +71 -0
  22. data/app/components/hakumi_components/button/component.rb +62 -20
  23. data/app/components/hakumi_components/calendar/component.html.erb +19 -19
  24. data/app/components/hakumi_components/calendar/component.rb +225 -202
  25. data/app/components/hakumi_components/calendar/day_cell.rb +62 -0
  26. data/app/components/hakumi_components/calendar/display_model.rb +237 -0
  27. data/app/components/hakumi_components/calendar/event_entry.rb +54 -0
  28. data/app/components/hakumi_components/calendar/locale_pack.rb +28 -0
  29. data/app/components/hakumi_components/calendar/panel_entry.rb +48 -0
  30. data/app/components/hakumi_components/calendar/week_row.rb +28 -0
  31. data/app/components/hakumi_components/card/component.html.erb +2 -2
  32. data/app/components/hakumi_components/card/component.rb +76 -49
  33. data/app/components/hakumi_components/card/grid/component.html.erb +1 -1
  34. data/app/components/hakumi_components/card/grid/component.rb +23 -17
  35. data/app/components/hakumi_components/card/meta/component.html.erb +8 -8
  36. data/app/components/hakumi_components/card/meta/component.rb +42 -24
  37. data/app/components/hakumi_components/carousel/autoplay_config.rb +27 -0
  38. data/app/components/hakumi_components/carousel/component.rb +85 -67
  39. data/app/components/hakumi_components/carousel/dots_config.rb +36 -0
  40. data/app/components/hakumi_components/cascader/component.html.erb +54 -36
  41. data/app/components/hakumi_components/cascader/component.rb +111 -62
  42. data/app/components/hakumi_components/checkbox/component.html.erb +5 -5
  43. data/app/components/hakumi_components/checkbox/component.rb +40 -6
  44. data/app/components/hakumi_components/checkbox/group/component.html.erb +4 -4
  45. data/app/components/hakumi_components/checkbox/group/component.rb +40 -13
  46. data/app/components/hakumi_components/checkbox/group/option.rb +34 -0
  47. data/app/components/hakumi_components/collapse/component.rb +64 -48
  48. data/app/components/hakumi_components/collapse/panel/component.rb +64 -21
  49. data/app/components/hakumi_components/color_picker/component.html.erb +21 -22
  50. data/app/components/hakumi_components/color_picker/component.rb +159 -49
  51. data/app/components/hakumi_components/color_picker/preset_group.rb +27 -0
  52. data/app/components/hakumi_components/concerns/form_field.rb +169 -68
  53. data/app/components/hakumi_components/concerns/form_field_contract.rb +57 -0
  54. data/app/components/hakumi_components/concerns/form_field_interface.rb +16 -0
  55. data/app/components/hakumi_components/concerns/input_control.rb +111 -0
  56. data/app/components/hakumi_components/concerns/input_control_contract.rb +47 -0
  57. data/app/components/hakumi_components/concerns/input_control_interface.rb +34 -0
  58. data/app/components/hakumi_components/concerns/selection_control.rb +122 -0
  59. data/app/components/hakumi_components/concerns/selection_control_contract.rb +47 -0
  60. data/app/components/hakumi_components/concerns/selection_control_interface.rb +34 -0
  61. data/app/components/hakumi_components/container/component.rb +29 -14
  62. data/app/components/hakumi_components/date_picker/component.html.erb +1 -3
  63. data/app/components/hakumi_components/date_picker/component.rb +130 -16
  64. data/app/components/hakumi_components/date_picker/range_picker.rb +159 -28
  65. data/app/components/hakumi_components/date_picker/shared_rendering.rb +151 -61
  66. data/app/components/hakumi_components/descriptions/component.html.erb +6 -6
  67. data/app/components/hakumi_components/descriptions/component.rb +98 -61
  68. data/app/components/hakumi_components/descriptions/item/component.rb +32 -8
  69. data/app/components/hakumi_components/divider/component.rb +36 -16
  70. data/app/components/hakumi_components/drawer/component.html.erb +2 -2
  71. data/app/components/hakumi_components/drawer/component.rb +112 -29
  72. data/app/components/hakumi_components/dropdown/component.rb +32 -35
  73. data/app/components/hakumi_components/dropdown/divider/component.rb +4 -0
  74. data/app/components/hakumi_components/dropdown/item/component.rb +42 -16
  75. data/app/components/hakumi_components/empty/component.rb +66 -31
  76. data/app/components/hakumi_components/flex/component.rb +39 -21
  77. data/app/components/hakumi_components/float_button/back_top/component.rb +35 -28
  78. data/app/components/hakumi_components/float_button/component.rb +161 -75
  79. data/app/components/hakumi_components/float_button/group/component.rb +85 -98
  80. data/app/components/hakumi_components/float_button/group_cluster/component.rb +46 -54
  81. data/app/components/hakumi_components/float_button/group_spec.rb +259 -0
  82. data/app/components/hakumi_components/float_button/item_spec.rb +115 -0
  83. data/app/components/hakumi_components/float_button/position_config.rb +68 -0
  84. data/app/components/hakumi_components/form/item/component.rb +34 -27
  85. data/app/components/hakumi_components/grid/col/component.rb +88 -17
  86. data/app/components/hakumi_components/grid/row/component.rb +35 -17
  87. data/app/components/hakumi_components/icon/component.rb +49 -49
  88. data/app/components/hakumi_components/image/component.html.erb +7 -7
  89. data/app/components/hakumi_components/image/component.rb +103 -40
  90. data/app/components/hakumi_components/image/preview_group/component.html.erb +1 -1
  91. data/app/components/hakumi_components/image/preview_group/component.rb +41 -36
  92. data/app/components/hakumi_components/image/preview_group/item.rb +48 -0
  93. data/app/components/hakumi_components/input/component.html.erb +1 -1
  94. data/app/components/hakumi_components/input/component.rb +142 -66
  95. data/app/components/hakumi_components/input/password/component.rb +30 -41
  96. data/app/components/hakumi_components/input/text_area/component.html.erb +2 -2
  97. data/app/components/hakumi_components/input/text_area/component.rb +89 -42
  98. data/app/components/hakumi_components/input_number/component.html.erb +5 -5
  99. data/app/components/hakumi_components/input_number/component.rb +137 -55
  100. data/app/components/hakumi_components/layout/component.html.erb +1 -1
  101. data/app/components/hakumi_components/layout/component.rb +23 -16
  102. data/app/components/hakumi_components/layout/content/component.html.erb +1 -1
  103. data/app/components/hakumi_components/layout/content/component.rb +24 -14
  104. data/app/components/hakumi_components/layout/footer/component.html.erb +1 -1
  105. data/app/components/hakumi_components/layout/footer/component.rb +24 -14
  106. data/app/components/hakumi_components/layout/header/component.html.erb +1 -1
  107. data/app/components/hakumi_components/layout/header/component.rb +24 -14
  108. data/app/components/hakumi_components/layout/sider/component.html.erb +1 -1
  109. data/app/components/hakumi_components/layout/sider/component.rb +83 -49
  110. data/app/components/hakumi_components/mentions/coercion.rb +46 -0
  111. data/app/components/hakumi_components/mentions/component.html.erb +6 -6
  112. data/app/components/hakumi_components/mentions/component.rb +131 -67
  113. data/app/components/hakumi_components/mentions/option.rb +30 -0
  114. data/app/components/hakumi_components/menu/component.rb +50 -59
  115. data/app/components/hakumi_components/menu/divider/component.rb +4 -0
  116. data/app/components/hakumi_components/menu/group/component.rb +16 -15
  117. data/app/components/hakumi_components/menu/item/component.rb +42 -19
  118. data/app/components/hakumi_components/menu/sub_menu/component.rb +49 -37
  119. data/app/components/hakumi_components/message/component.rb +62 -27
  120. data/app/components/hakumi_components/modal/component.html.erb +6 -6
  121. data/app/components/hakumi_components/modal/component.rb +93 -40
  122. data/app/components/hakumi_components/modal/confirm/component.html.erb +2 -2
  123. data/app/components/hakumi_components/modal/confirm/component.rb +49 -8
  124. data/app/components/hakumi_components/modal/error/component.rb +8 -39
  125. data/app/components/hakumi_components/modal/info/component.rb +6 -40
  126. data/app/components/hakumi_components/modal/status_component.rb +150 -0
  127. data/app/components/hakumi_components/modal/success/component.rb +6 -40
  128. data/app/components/hakumi_components/modal/warning/component.rb +14 -44
  129. data/app/components/hakumi_components/notification/component.rb +72 -38
  130. data/app/components/hakumi_components/pagination/component.html.erb +7 -11
  131. data/app/components/hakumi_components/pagination/component.rb +105 -72
  132. data/app/components/hakumi_components/pagination/page_item.rb +49 -0
  133. data/app/components/hakumi_components/popconfirm/component.rb +67 -19
  134. data/app/components/hakumi_components/popover/component.html.erb +2 -2
  135. data/app/components/hakumi_components/popover/component.rb +102 -38
  136. data/app/components/hakumi_components/progress/attribute_renderer.rb +354 -0
  137. data/app/components/hakumi_components/progress/circle_geometry.rb +76 -0
  138. data/app/components/hakumi_components/progress/component.html.erb +18 -17
  139. data/app/components/hakumi_components/progress/component.rb +230 -402
  140. data/app/components/hakumi_components/progress/controller_locals_parser.rb +130 -0
  141. data/app/components/hakumi_components/progress/info_tooltip_policy.rb +39 -0
  142. data/app/components/hakumi_components/progress/info_value.rb +75 -0
  143. data/app/components/hakumi_components/progress/status_state.rb +31 -0
  144. data/app/components/hakumi_components/progress/steps_renderer.rb +149 -0
  145. data/app/components/hakumi_components/progress/stroke_gradient_value.rb +90 -0
  146. data/app/components/hakumi_components/qr_code/component.rb +138 -72
  147. data/app/components/hakumi_components/radio/component.html.erb +3 -3
  148. data/app/components/hakumi_components/radio/component.rb +42 -9
  149. data/app/components/hakumi_components/radio/group/component.html.erb +9 -9
  150. data/app/components/hakumi_components/radio/group/component.rb +76 -27
  151. data/app/components/hakumi_components/radio/group/option.rb +43 -0
  152. data/app/components/hakumi_components/rate/component.html.erb +1 -1
  153. data/app/components/hakumi_components/rate/component.rb +55 -9
  154. data/app/components/hakumi_components/result/component.rb +87 -37
  155. data/app/components/hakumi_components/segmented/component.html.erb +1 -1
  156. data/app/components/hakumi_components/segmented/component.rb +81 -118
  157. data/app/components/hakumi_components/segmented/option.rb +191 -0
  158. data/app/components/hakumi_components/select/component.html.erb +19 -19
  159. data/app/components/hakumi_components/select/component.rb +88 -37
  160. data/app/components/hakumi_components/selection_control/coercion.rb +161 -0
  161. data/app/components/hakumi_components/selection_control/entry.rb +22 -0
  162. data/app/components/hakumi_components/selection_control/option.rb +42 -0
  163. data/app/components/hakumi_components/selection_control/option_group.rb +34 -0
  164. data/app/components/hakumi_components/selection_control/tree_node.rb +123 -0
  165. data/app/components/hakumi_components/skeleton/avatar/component.rb +36 -14
  166. data/app/components/hakumi_components/skeleton/avatar_config.rb +79 -0
  167. data/app/components/hakumi_components/skeleton/button/component.rb +32 -14
  168. data/app/components/hakumi_components/skeleton/component.rb +79 -93
  169. data/app/components/hakumi_components/skeleton/image/component.rb +46 -22
  170. data/app/components/hakumi_components/skeleton/input/component.rb +25 -10
  171. data/app/components/hakumi_components/skeleton/node/component.rb +23 -7
  172. data/app/components/hakumi_components/skeleton/paragraph_config.rb +92 -0
  173. data/app/components/hakumi_components/skeleton/title_config.rb +31 -0
  174. data/app/components/hakumi_components/slider/component.html.erb +11 -11
  175. data/app/components/hakumi_components/slider/component.rb +172 -53
  176. data/app/components/hakumi_components/slider/mark.rb +27 -0
  177. data/app/components/hakumi_components/space/compact/component.html.erb +1 -3
  178. data/app/components/hakumi_components/space/compact/component.rb +35 -19
  179. data/app/components/hakumi_components/space/component.html.erb +1 -1
  180. data/app/components/hakumi_components/space/component.rb +75 -39
  181. data/app/components/hakumi_components/spin/component.rb +92 -31
  182. data/app/components/hakumi_components/splitter/component.html.erb +9 -3
  183. data/app/components/hakumi_components/splitter/component.rb +55 -22
  184. data/app/components/hakumi_components/splitter/panel/component.html.erb +1 -3
  185. data/app/components/hakumi_components/splitter/panel/component.rb +64 -39
  186. data/app/components/hakumi_components/statistic/component.rb +143 -59
  187. data/app/components/hakumi_components/steps/component.rb +87 -55
  188. data/app/components/hakumi_components/steps/item/component.rb +59 -20
  189. data/app/components/hakumi_components/switch/component.html.erb +2 -3
  190. data/app/components/hakumi_components/switch/component.rb +62 -36
  191. data/app/components/hakumi_components/table/column/component.rb +80 -23
  192. data/app/components/hakumi_components/table/column_definition.rb +181 -0
  193. data/app/components/hakumi_components/table/column_group/component.rb +32 -21
  194. data/app/components/hakumi_components/table/component.html.erb +22 -31
  195. data/app/components/hakumi_components/table/component.rb +248 -509
  196. data/app/components/hakumi_components/table/concerns/attribute_helpers.rb +22 -0
  197. data/app/components/hakumi_components/table/concerns/cell_rendering.rb +277 -0
  198. data/app/components/hakumi_components/table/concerns/columns.rb +293 -91
  199. data/app/components/hakumi_components/table/concerns/editable.rb +36 -89
  200. data/app/components/hakumi_components/table/concerns/ellipsis.rb +31 -30
  201. data/app/components/hakumi_components/table/concerns/fixed_columns.rb +26 -19
  202. data/app/components/hakumi_components/table/concerns/surface_rendering.rb +365 -0
  203. data/app/components/hakumi_components/table/configs.rb +518 -0
  204. data/app/components/hakumi_components/table/definition_types.rb +40 -0
  205. data/app/components/hakumi_components/table/display_rows.rb +56 -0
  206. data/app/components/hakumi_components/table/ellipsis_config.rb +143 -0
  207. data/app/components/hakumi_components/table/fixed_offset.rb +36 -0
  208. data/app/components/hakumi_components/table/header_cell.rb +23 -0
  209. data/app/components/hakumi_components/table/row_record.rb +60 -0
  210. data/app/components/hakumi_components/table/row_render_state.rb +85 -0
  211. data/app/components/hakumi_components/tabs/component.html.erb +8 -8
  212. data/app/components/hakumi_components/tabs/component.rb +114 -64
  213. data/app/components/hakumi_components/tabs/indicator_config.rb +34 -0
  214. data/app/components/hakumi_components/tabs/item/component.rb +73 -13
  215. data/app/components/hakumi_components/tag/component.rb +142 -47
  216. data/app/components/hakumi_components/tag/group/component.rb +18 -6
  217. data/app/components/hakumi_components/time_picker/component.html.erb +8 -8
  218. data/app/components/hakumi_components/time_picker/component.rb +71 -17
  219. data/app/components/hakumi_components/timeline/component.html.erb +3 -2
  220. data/app/components/hakumi_components/timeline/component.rb +188 -55
  221. data/app/components/hakumi_components/timeline/item/component.html.erb +2 -2
  222. data/app/components/hakumi_components/timeline/item/component.rb +121 -60
  223. data/app/components/hakumi_components/tooltip/component.html.erb +1 -1
  224. data/app/components/hakumi_components/tooltip/component.rb +89 -64
  225. data/app/components/hakumi_components/tour/component.rb +74 -49
  226. data/app/components/hakumi_components/tour/step.rb +86 -0
  227. data/app/components/hakumi_components/transfer/coercion.rb +66 -0
  228. data/app/components/hakumi_components/transfer/component.html.erb +171 -140
  229. data/app/components/hakumi_components/transfer/component.rb +232 -82
  230. data/app/components/hakumi_components/transfer/item.rb +54 -0
  231. data/app/components/hakumi_components/transfer/operations.rb +31 -0
  232. data/app/components/hakumi_components/tree/component.rb +219 -400
  233. data/app/components/hakumi_components/tree/concerns/node_rendering.rb +365 -0
  234. data/app/components/hakumi_components/tree/node.rb +276 -0
  235. data/app/components/hakumi_components/tree_select/component.html.erb +23 -9
  236. data/app/components/hakumi_components/tree_select/component.rb +116 -107
  237. data/app/components/hakumi_components/typography/base_component.rb +69 -36
  238. data/app/components/hakumi_components/typography/link/component.rb +63 -6
  239. data/app/components/hakumi_components/typography/paragraph/component.rb +6 -0
  240. data/app/components/hakumi_components/typography/text/component.rb +4 -0
  241. data/app/components/hakumi_components/typography/title/component.rb +61 -6
  242. data/app/components/hakumi_components/upload/component.html.erb +106 -88
  243. data/app/components/hakumi_components/upload/component.rb +222 -48
  244. data/app/components/hakumi_components/upload/file_entry.rb +53 -0
  245. data/app/controllers/hakumi_components/components_controller.rb +2 -1
  246. data/app/form_builders/hakumi_components/form_builder/contracts.rb +55 -0
  247. data/app/form_builders/hakumi_components/form_builder/field_context.rb +43 -0
  248. data/app/form_builders/hakumi_components/form_builder/model_binding.rb +163 -0
  249. data/app/form_builders/hakumi_components/form_builder.rb +238 -317
  250. data/app/helpers/hakumi_components/form_helper.rb +27 -23
  251. data/app/javascript/hakumi_components/controllers/hakumi/admin_panel_controller.js +5 -7
  252. data/app/javascript/hakumi_components/controllers/hakumi/back_top_controller.js +1 -1
  253. data/app/javascript/hakumi_components/controllers/hakumi/button_controller.js +108 -2
  254. data/app/javascript/hakumi_components/controllers/hakumi/calendar_controller.js +183 -95
  255. data/app/javascript/hakumi_components/controllers/hakumi/color_picker_controller.js +23 -285
  256. data/app/javascript/hakumi_components/controllers/hakumi/date_picker_controller.js +274 -262
  257. data/app/javascript/hakumi_components/controllers/hakumi/float_button_group_controller.js +2 -2
  258. data/app/javascript/hakumi_components/controllers/hakumi/message_controller.js +4 -2
  259. data/app/javascript/hakumi_components/controllers/hakumi/modal_controller.js +119 -125
  260. data/app/javascript/hakumi_components/controllers/hakumi/table/editable.js +291 -0
  261. data/app/javascript/hakumi_components/controllers/hakumi/table_controller.js +166 -366
  262. data/app/javascript/hakumi_components/controllers/hakumi/tabs_controller.js +8 -2
  263. data/app/javascript/hakumi_components/controllers/hakumi/tag_controller.js +27 -25
  264. data/app/javascript/hakumi_components/controllers/hakumi/tag_group_controller.js +19 -18
  265. data/app/javascript/hakumi_components/controllers/hakumi/theme_controller.js +116 -117
  266. data/app/javascript/hakumi_components/controllers/hakumi/transfer_controller.js +17 -1
  267. data/app/javascript/hakumi_components/controllers/hakumi/tree_controller.js +363 -78
  268. data/app/javascript/hakumi_components/controllers/hakumi/typography_controller.js +3 -3
  269. data/app/javascript/hakumi_components/controllers/hakumi/upload_controller.js +320 -204
  270. data/app/javascript/hakumi_components/core/render_component.js +37 -11
  271. data/app/javascript/hakumi_components/utils/color_helper.js +262 -0
  272. data/app/javascript/stylesheets/_base.scss +9 -0
  273. data/app/javascript/stylesheets/_hakumi_components.scss +1 -0
  274. data/app/javascript/stylesheets/components/_breadcrumb.scss +2 -2
  275. data/app/javascript/stylesheets/components/_calendar.scss +13 -13
  276. data/app/javascript/stylesheets/components/_cascader.scss +5 -5
  277. data/app/javascript/stylesheets/components/_checkbox.scss +9 -11
  278. data/app/javascript/stylesheets/components/_color_picker.scss +11 -11
  279. data/app/javascript/stylesheets/components/_date_picker.scss +4 -4
  280. data/app/javascript/stylesheets/components/_descriptions.scss +2 -2
  281. data/app/javascript/stylesheets/components/_drawer.scss +3 -3
  282. data/app/javascript/stylesheets/components/_dropdown.scss +2 -2
  283. data/app/javascript/stylesheets/components/_flex.scss +1 -1
  284. data/app/javascript/stylesheets/components/_float_button.scss +5 -5
  285. data/app/javascript/stylesheets/components/_form_item.scss +92 -0
  286. data/app/javascript/stylesheets/components/_image.scss +15 -15
  287. data/app/javascript/stylesheets/components/_input.scss +23 -113
  288. data/app/javascript/stylesheets/components/_layout.scss +27 -26
  289. data/app/javascript/stylesheets/components/_menu.scss +15 -15
  290. data/app/javascript/stylesheets/components/_modal.scss +13 -13
  291. data/app/javascript/stylesheets/components/_notification.scss +3 -3
  292. data/app/javascript/stylesheets/components/_popover.scss +1 -1
  293. data/app/javascript/stylesheets/components/_segmented.scss +3 -3
  294. data/app/javascript/stylesheets/components/_select.scss +6 -6
  295. data/app/javascript/stylesheets/components/_slider.scss +1 -1
  296. data/app/javascript/stylesheets/components/_spin.scss +2 -2
  297. data/app/javascript/stylesheets/components/_steps.scss +10 -10
  298. data/app/javascript/stylesheets/components/_switch.scss +11 -10
  299. data/app/javascript/stylesheets/components/_table.scss +6 -6
  300. data/app/javascript/stylesheets/components/_tag.scss +2 -2
  301. data/app/javascript/stylesheets/components/_tooltip.scss +4 -4
  302. data/app/javascript/stylesheets/components/_tree_select.scss +3 -3
  303. data/app/javascript/stylesheets/components/_typography.scss +3 -3
  304. data/app/javascript/stylesheets/components/_upload.scss +4 -4
  305. data/app/services/hakumi_components/component_handler.rb +95 -24
  306. data/app/services/hakumi_components/icon/loader.rb +84 -67
  307. data/app/services/hakumi_components/illustrations/loader.rb +35 -27
  308. data/app/views/hakumi/_alert.html.erb +4 -1
  309. data/app/views/hakumi/_drawer.html.erb +1 -1
  310. data/app/views/hakumi/_statistic.html.erb +11 -11
  311. data/lib/generators/hakumi_components/install_generator.rb +14 -1
  312. data/lib/hakumi_components/documentation/models.rb +290 -0
  313. data/lib/hakumi_components/documentation/node.rb +73 -0
  314. data/lib/hakumi_components/documentation.rb +139 -62
  315. data/lib/hakumi_components/engine.rb +17 -11
  316. data/lib/hakumi_components/file_size_checker.rb +215 -0
  317. data/lib/hakumi_components/locales/en.yml +115 -0
  318. data/lib/hakumi_components/rails/attribute_introspection.rb +39 -107
  319. data/lib/hakumi_components/rails/model_reflection.rb +154 -0
  320. data/lib/hakumi_components/rails/validation_introspection.rb +25 -73
  321. data/lib/hakumi_components/rails/validation_mapper.rb +148 -201
  322. data/lib/hakumi_components/rails.rb +2 -0
  323. data/lib/hakumi_components/stylesheet_ownership_checker.rb +191 -0
  324. data/lib/hakumi_components/types/form_field.rb +24 -0
  325. data/lib/hakumi_components/types/html.rb +28 -0
  326. data/lib/hakumi_components/types/rendering.rb +10 -0
  327. data/lib/hakumi_components/types/stimulus.rb +19 -0
  328. data/lib/hakumi_components/types/validation.rb +22 -0
  329. data/lib/hakumi_components/types.rb +13 -0
  330. data/lib/hakumi_components/version.rb +2 -1
  331. data/lib/hakumi_components.rb +26 -6
  332. data/lib/tasks/coverage.rake +1 -0
  333. metadata +100 -136
  334. data/sig/action_view/tag_builder.rbs +0 -24
  335. data/sig/active_support/concern_patch.rbs +0 -7
  336. data/sig/generators/hakumi_components/install_generator.rbs +0 -11
  337. data/sig/hakumi_components/admin_panel/component.rbs +0 -28
  338. data/sig/hakumi_components/affix/component.rbs +0 -44
  339. data/sig/hakumi_components/alert/component.rbs +0 -64
  340. data/sig/hakumi_components/anchor/component.rbs +0 -45
  341. data/sig/hakumi_components/anchor/link/component.rbs +0 -31
  342. data/sig/hakumi_components/autocomplete/component.rbs +0 -68
  343. data/sig/hakumi_components/avatar/component.rbs +0 -44
  344. data/sig/hakumi_components/badge/component.rbs +0 -41
  345. data/sig/hakumi_components/base_component.rbs +0 -82
  346. data/sig/hakumi_components/breadcrumb/component.rbs +0 -21
  347. data/sig/hakumi_components/breadcrumb/item/component.rbs +0 -36
  348. data/sig/hakumi_components/button/component.rbs +0 -56
  349. data/sig/hakumi_components/calendar/component.rbs +0 -41
  350. data/sig/hakumi_components/card/component.rbs +0 -50
  351. data/sig/hakumi_components/card/grid/component.rbs +0 -21
  352. data/sig/hakumi_components/card/meta/component.rbs +0 -25
  353. data/sig/hakumi_components/carousel/component.rbs +0 -88
  354. data/sig/hakumi_components/cascader/component.rbs +0 -52
  355. data/sig/hakumi_components/checkbox/component.rbs +0 -46
  356. data/sig/hakumi_components/checkbox/group/component.rbs +0 -34
  357. data/sig/hakumi_components/collapse/component.rbs +0 -57
  358. data/sig/hakumi_components/collapse/panel/component.rbs +0 -47
  359. data/sig/hakumi_components/color_picker/component.rbs +0 -80
  360. data/sig/hakumi_components/concerns/form_field.rbs +0 -89
  361. data/sig/hakumi_components/container/component.rbs +0 -37
  362. data/sig/hakumi_components/date_picker/component.rbs +0 -72
  363. data/sig/hakumi_components/date_picker/range_picker.rbs +0 -68
  364. data/sig/hakumi_components/date_picker/shared_rendering.rbs +0 -41
  365. data/sig/hakumi_components/descriptions/component.rbs +0 -59
  366. data/sig/hakumi_components/descriptions/item/component.rbs +0 -31
  367. data/sig/hakumi_components/divider/component.rbs +0 -39
  368. data/sig/hakumi_components/drawer/component.rbs +0 -66
  369. data/sig/hakumi_components/dropdown/component.rbs +0 -45
  370. data/sig/hakumi_components/dropdown/divider/component.rbs +0 -11
  371. data/sig/hakumi_components/dropdown/item/component.rbs +0 -45
  372. data/sig/hakumi_components/empty/component.rbs +0 -40
  373. data/sig/hakumi_components/flex/component.rbs +0 -47
  374. data/sig/hakumi_components/float_button/back_top/component.rbs +0 -45
  375. data/sig/hakumi_components/float_button/component.rbs +0 -80
  376. data/sig/hakumi_components/float_button/group/component.rbs +0 -95
  377. data/sig/hakumi_components/float_button/group_cluster/component.rbs +0 -60
  378. data/sig/hakumi_components/form/item/component.rbs +0 -39
  379. data/sig/hakumi_components/form_builder.rbs +0 -37
  380. data/sig/hakumi_components/grid/col/component.rbs +0 -50
  381. data/sig/hakumi_components/grid/row/component.rbs +0 -46
  382. data/sig/hakumi_components/icon/component.rbs +0 -56
  383. data/sig/hakumi_components/image/component.rbs +0 -56
  384. data/sig/hakumi_components/image/preview_group/component.rbs +0 -28
  385. data/sig/hakumi_components/input/component.rbs +0 -71
  386. data/sig/hakumi_components/input/password/component.rbs +0 -27
  387. data/sig/hakumi_components/input/text_area/component.rbs +0 -42
  388. data/sig/hakumi_components/input_number/component.rbs +0 -85
  389. data/sig/hakumi_components/layout/component.rbs +0 -21
  390. data/sig/hakumi_components/layout/content/component.rbs +0 -19
  391. data/sig/hakumi_components/layout/footer/component.rbs +0 -19
  392. data/sig/hakumi_components/layout/header/component.rbs +0 -19
  393. data/sig/hakumi_components/layout/sider/component.rbs +0 -19
  394. data/sig/hakumi_components/mentions/component.rbs +0 -75
  395. data/sig/hakumi_components/menu/component.rbs +0 -52
  396. data/sig/hakumi_components/menu/divider/component.rbs +0 -11
  397. data/sig/hakumi_components/menu/group/component.rbs +0 -20
  398. data/sig/hakumi_components/menu/item/component.rbs +0 -42
  399. data/sig/hakumi_components/menu/sub_menu/component.rbs +0 -37
  400. data/sig/hakumi_components/message/component.rbs +0 -50
  401. data/sig/hakumi_components/modal/component.rbs +0 -76
  402. data/sig/hakumi_components/modal/confirm/component.rbs +0 -32
  403. data/sig/hakumi_components/modal/error/component.rbs +0 -27
  404. data/sig/hakumi_components/modal/info/component.rbs +0 -27
  405. data/sig/hakumi_components/modal/success/component.rbs +0 -27
  406. data/sig/hakumi_components/modal/warning/component.rbs +0 -27
  407. data/sig/hakumi_components/notification/component.rbs +0 -64
  408. data/sig/hakumi_components/pagination/component.rbs +0 -113
  409. data/sig/hakumi_components/popconfirm/component.rbs +0 -52
  410. data/sig/hakumi_components/popover/component.rbs +0 -66
  411. data/sig/hakumi_components/progress/component.rbs +0 -201
  412. data/sig/hakumi_components/qr_code/component.rbs +0 -111
  413. data/sig/hakumi_components/radio/component.rbs +0 -55
  414. data/sig/hakumi_components/radio/group/component.rbs +0 -71
  415. data/sig/hakumi_components/rails/attribute_introspection.rbs +0 -16
  416. data/sig/hakumi_components/rails/validation_introspection.rbs +0 -18
  417. data/sig/hakumi_components/rails/validation_mapper.rbs +0 -53
  418. data/sig/hakumi_components/rails.rbs +0 -6
  419. data/sig/hakumi_components/rate/component.rbs +0 -56
  420. data/sig/hakumi_components/result/component.rbs +0 -65
  421. data/sig/hakumi_components/segmented/component.rbs +0 -72
  422. data/sig/hakumi_components/select/component.rbs +0 -73
  423. data/sig/hakumi_components/skeleton/avatar/component.rbs +0 -23
  424. data/sig/hakumi_components/skeleton/button/component.rbs +0 -24
  425. data/sig/hakumi_components/skeleton/component.rbs +0 -76
  426. data/sig/hakumi_components/skeleton/image/component.rbs +0 -22
  427. data/sig/hakumi_components/skeleton/input/component.rbs +0 -23
  428. data/sig/hakumi_components/skeleton/node/component.rbs +0 -21
  429. data/sig/hakumi_components/slider/component.rbs +0 -85
  430. data/sig/hakumi_components/space/compact/component.rbs +0 -21
  431. data/sig/hakumi_components/space/component.rbs +0 -47
  432. data/sig/hakumi_components/spin/component.rbs +0 -77
  433. data/sig/hakumi_components/splitter/component.rbs +0 -27
  434. data/sig/hakumi_components/splitter/panel/component.rbs +0 -36
  435. data/sig/hakumi_components/statistic/component.rbs +0 -97
  436. data/sig/hakumi_components/steps/component.rbs +0 -82
  437. data/sig/hakumi_components/steps/item/component.rbs +0 -29
  438. data/sig/hakumi_components/switch/component.rbs +0 -52
  439. data/sig/hakumi_components/table/column/component.rbs +0 -57
  440. data/sig/hakumi_components/table/column_group/component.rbs +0 -20
  441. data/sig/hakumi_components/table/component.rbs +0 -279
  442. data/sig/hakumi_components/table/concerns/columns.rbs +0 -95
  443. data/sig/hakumi_components/table/concerns/editable.rbs +0 -40
  444. data/sig/hakumi_components/table/concerns/ellipsis.rbs +0 -27
  445. data/sig/hakumi_components/table/concerns/fixed_columns.rbs +0 -33
  446. data/sig/hakumi_components/tabs/component.rbs +0 -66
  447. data/sig/hakumi_components/tabs/item/component.rbs +0 -29
  448. data/sig/hakumi_components/tag/component.rbs +0 -86
  449. data/sig/hakumi_components/tag/group/component.rbs +0 -24
  450. data/sig/hakumi_components/time_picker/component.rbs +0 -72
  451. data/sig/hakumi_components/timeline/component.rbs +0 -61
  452. data/sig/hakumi_components/timeline/item/component.rbs +0 -70
  453. data/sig/hakumi_components/tooltip/component.rbs +0 -73
  454. data/sig/hakumi_components/tour/component.rbs +0 -84
  455. data/sig/hakumi_components/transfer/component.rbs +0 -75
  456. data/sig/hakumi_components/tree/component.rbs +0 -126
  457. data/sig/hakumi_components/tree_select/component.rbs +0 -122
  458. data/sig/hakumi_components/typography/base_component.rbs +0 -57
  459. data/sig/hakumi_components/typography/link/component.rbs +0 -28
  460. data/sig/hakumi_components/typography/paragraph/component.rbs +0 -13
  461. data/sig/hakumi_components/typography/text/component.rbs +0 -10
  462. data/sig/hakumi_components/typography/title/component.rbs +0 -28
  463. data/sig/hakumi_components/upload/component.rbs +0 -78
  464. data/sig/hakumi_components.rbs +0 -96
  465. data/sig/rails/active_model/validations/comparison_validator.rbs +0 -6
  466. data/sig/rails.rbs +0 -18
  467. data/sig/view_component/base.rbs +0 -28
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hakumi_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.18.pre
4
+ version: 0.1.19.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - kb714
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-01-29 00:00:00.000000000 Z
11
+ date: 2026-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '7.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sorbet-runtime
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0.5'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0.5'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: view_component
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -930,29 +944,48 @@ files:
930
944
  - app/components/hakumi_components/breadcrumb/component.rb
931
945
  - app/components/hakumi_components/breadcrumb/item/component.html.erb
932
946
  - app/components/hakumi_components/breadcrumb/item/component.rb
947
+ - app/components/hakumi_components/breadcrumb/item/menu_entry.rb
933
948
  - app/components/hakumi_components/button/component.rb
934
949
  - app/components/hakumi_components/calendar/component.html.erb
935
950
  - app/components/hakumi_components/calendar/component.rb
951
+ - app/components/hakumi_components/calendar/day_cell.rb
952
+ - app/components/hakumi_components/calendar/display_model.rb
953
+ - app/components/hakumi_components/calendar/event_entry.rb
954
+ - app/components/hakumi_components/calendar/locale_pack.rb
955
+ - app/components/hakumi_components/calendar/panel_entry.rb
956
+ - app/components/hakumi_components/calendar/week_row.rb
936
957
  - app/components/hakumi_components/card/component.html.erb
937
958
  - app/components/hakumi_components/card/component.rb
938
959
  - app/components/hakumi_components/card/grid/component.html.erb
939
960
  - app/components/hakumi_components/card/grid/component.rb
940
961
  - app/components/hakumi_components/card/meta/component.html.erb
941
962
  - app/components/hakumi_components/card/meta/component.rb
963
+ - app/components/hakumi_components/carousel/autoplay_config.rb
942
964
  - app/components/hakumi_components/carousel/component.html.erb
943
965
  - app/components/hakumi_components/carousel/component.rb
966
+ - app/components/hakumi_components/carousel/dots_config.rb
944
967
  - app/components/hakumi_components/cascader/component.html.erb
945
968
  - app/components/hakumi_components/cascader/component.rb
946
969
  - app/components/hakumi_components/checkbox/component.html.erb
947
970
  - app/components/hakumi_components/checkbox/component.rb
948
971
  - app/components/hakumi_components/checkbox/group/component.html.erb
949
972
  - app/components/hakumi_components/checkbox/group/component.rb
973
+ - app/components/hakumi_components/checkbox/group/option.rb
950
974
  - app/components/hakumi_components/collapse/component.html.erb
951
975
  - app/components/hakumi_components/collapse/component.rb
952
976
  - app/components/hakumi_components/collapse/panel/component.rb
953
977
  - app/components/hakumi_components/color_picker/component.html.erb
954
978
  - app/components/hakumi_components/color_picker/component.rb
979
+ - app/components/hakumi_components/color_picker/preset_group.rb
955
980
  - app/components/hakumi_components/concerns/form_field.rb
981
+ - app/components/hakumi_components/concerns/form_field_contract.rb
982
+ - app/components/hakumi_components/concerns/form_field_interface.rb
983
+ - app/components/hakumi_components/concerns/input_control.rb
984
+ - app/components/hakumi_components/concerns/input_control_contract.rb
985
+ - app/components/hakumi_components/concerns/input_control_interface.rb
986
+ - app/components/hakumi_components/concerns/selection_control.rb
987
+ - app/components/hakumi_components/concerns/selection_control_contract.rb
988
+ - app/components/hakumi_components/concerns/selection_control_interface.rb
956
989
  - app/components/hakumi_components/container/component.rb
957
990
  - app/components/hakumi_components/date_picker/component.html.erb
958
991
  - app/components/hakumi_components/date_picker/component.rb
@@ -976,6 +1009,9 @@ files:
976
1009
  - app/components/hakumi_components/float_button/component.rb
977
1010
  - app/components/hakumi_components/float_button/group/component.rb
978
1011
  - app/components/hakumi_components/float_button/group_cluster/component.rb
1012
+ - app/components/hakumi_components/float_button/group_spec.rb
1013
+ - app/components/hakumi_components/float_button/item_spec.rb
1014
+ - app/components/hakumi_components/float_button/position_config.rb
979
1015
  - app/components/hakumi_components/form/item/component.rb
980
1016
  - app/components/hakumi_components/grid/col/component.rb
981
1017
  - app/components/hakumi_components/grid/row/component.rb
@@ -985,6 +1021,7 @@ files:
985
1021
  - app/components/hakumi_components/image/component.rb
986
1022
  - app/components/hakumi_components/image/preview_group/component.html.erb
987
1023
  - app/components/hakumi_components/image/preview_group/component.rb
1024
+ - app/components/hakumi_components/image/preview_group/item.rb
988
1025
  - app/components/hakumi_components/input/component.html.erb
989
1026
  - app/components/hakumi_components/input/component.rb
990
1027
  - app/components/hakumi_components/input/password/component.rb
@@ -1002,8 +1039,10 @@ files:
1002
1039
  - app/components/hakumi_components/layout/header/component.rb
1003
1040
  - app/components/hakumi_components/layout/sider/component.html.erb
1004
1041
  - app/components/hakumi_components/layout/sider/component.rb
1042
+ - app/components/hakumi_components/mentions/coercion.rb
1005
1043
  - app/components/hakumi_components/mentions/component.html.erb
1006
1044
  - app/components/hakumi_components/mentions/component.rb
1045
+ - app/components/hakumi_components/mentions/option.rb
1007
1046
  - app/components/hakumi_components/menu/component.html.erb
1008
1047
  - app/components/hakumi_components/menu/component.rb
1009
1048
  - app/components/hakumi_components/menu/divider/component.rb
@@ -1021,33 +1060,51 @@ files:
1021
1060
  - app/components/hakumi_components/modal/confirm/component.rb
1022
1061
  - app/components/hakumi_components/modal/error/component.rb
1023
1062
  - app/components/hakumi_components/modal/info/component.rb
1063
+ - app/components/hakumi_components/modal/status_component.rb
1024
1064
  - app/components/hakumi_components/modal/success/component.rb
1025
1065
  - app/components/hakumi_components/modal/warning/component.rb
1026
1066
  - app/components/hakumi_components/notification/component.rb
1027
1067
  - app/components/hakumi_components/pagination/component.html.erb
1028
1068
  - app/components/hakumi_components/pagination/component.rb
1069
+ - app/components/hakumi_components/pagination/page_item.rb
1029
1070
  - app/components/hakumi_components/popconfirm/component.html.erb
1030
1071
  - app/components/hakumi_components/popconfirm/component.rb
1031
1072
  - app/components/hakumi_components/popover/component.html.erb
1032
1073
  - app/components/hakumi_components/popover/component.rb
1074
+ - app/components/hakumi_components/progress/attribute_renderer.rb
1075
+ - app/components/hakumi_components/progress/circle_geometry.rb
1033
1076
  - app/components/hakumi_components/progress/component.html.erb
1034
1077
  - app/components/hakumi_components/progress/component.rb
1078
+ - app/components/hakumi_components/progress/controller_locals_parser.rb
1079
+ - app/components/hakumi_components/progress/info_tooltip_policy.rb
1080
+ - app/components/hakumi_components/progress/info_value.rb
1081
+ - app/components/hakumi_components/progress/status_state.rb
1082
+ - app/components/hakumi_components/progress/steps_renderer.rb
1083
+ - app/components/hakumi_components/progress/stroke_gradient_value.rb
1035
1084
  - app/components/hakumi_components/qr_code/component.html.erb
1036
1085
  - app/components/hakumi_components/qr_code/component.rb
1037
1086
  - app/components/hakumi_components/radio/component.html.erb
1038
1087
  - app/components/hakumi_components/radio/component.rb
1039
1088
  - app/components/hakumi_components/radio/group/component.html.erb
1040
1089
  - app/components/hakumi_components/radio/group/component.rb
1090
+ - app/components/hakumi_components/radio/group/option.rb
1041
1091
  - app/components/hakumi_components/rate/component.html.erb
1042
1092
  - app/components/hakumi_components/rate/component.rb
1043
1093
  - app/components/hakumi_components/result/component.html.erb
1044
1094
  - app/components/hakumi_components/result/component.rb
1045
1095
  - app/components/hakumi_components/segmented/component.html.erb
1046
1096
  - app/components/hakumi_components/segmented/component.rb
1097
+ - app/components/hakumi_components/segmented/option.rb
1047
1098
  - app/components/hakumi_components/select/component.html.erb
1048
1099
  - app/components/hakumi_components/select/component.rb
1100
+ - app/components/hakumi_components/selection_control/coercion.rb
1101
+ - app/components/hakumi_components/selection_control/entry.rb
1102
+ - app/components/hakumi_components/selection_control/option.rb
1103
+ - app/components/hakumi_components/selection_control/option_group.rb
1104
+ - app/components/hakumi_components/selection_control/tree_node.rb
1049
1105
  - app/components/hakumi_components/skeleton/avatar/component.html.erb
1050
1106
  - app/components/hakumi_components/skeleton/avatar/component.rb
1107
+ - app/components/hakumi_components/skeleton/avatar_config.rb
1051
1108
  - app/components/hakumi_components/skeleton/button/component.html.erb
1052
1109
  - app/components/hakumi_components/skeleton/button/component.rb
1053
1110
  - app/components/hakumi_components/skeleton/component.html.erb
@@ -1058,8 +1115,11 @@ files:
1058
1115
  - app/components/hakumi_components/skeleton/input/component.rb
1059
1116
  - app/components/hakumi_components/skeleton/node/component.html.erb
1060
1117
  - app/components/hakumi_components/skeleton/node/component.rb
1118
+ - app/components/hakumi_components/skeleton/paragraph_config.rb
1119
+ - app/components/hakumi_components/skeleton/title_config.rb
1061
1120
  - app/components/hakumi_components/slider/component.html.erb
1062
1121
  - app/components/hakumi_components/slider/component.rb
1122
+ - app/components/hakumi_components/slider/mark.rb
1063
1123
  - app/components/hakumi_components/space/compact/component.html.erb
1064
1124
  - app/components/hakumi_components/space/compact/component.rb
1065
1125
  - app/components/hakumi_components/space/component.html.erb
@@ -1079,15 +1139,28 @@ files:
1079
1139
  - app/components/hakumi_components/switch/component.html.erb
1080
1140
  - app/components/hakumi_components/switch/component.rb
1081
1141
  - app/components/hakumi_components/table/column/component.rb
1142
+ - app/components/hakumi_components/table/column_definition.rb
1082
1143
  - app/components/hakumi_components/table/column_group/component.rb
1083
1144
  - app/components/hakumi_components/table/component.html.erb
1084
1145
  - app/components/hakumi_components/table/component.rb
1146
+ - app/components/hakumi_components/table/concerns/attribute_helpers.rb
1147
+ - app/components/hakumi_components/table/concerns/cell_rendering.rb
1085
1148
  - app/components/hakumi_components/table/concerns/columns.rb
1086
1149
  - app/components/hakumi_components/table/concerns/editable.rb
1087
1150
  - app/components/hakumi_components/table/concerns/ellipsis.rb
1088
1151
  - app/components/hakumi_components/table/concerns/fixed_columns.rb
1152
+ - app/components/hakumi_components/table/concerns/surface_rendering.rb
1153
+ - app/components/hakumi_components/table/configs.rb
1154
+ - app/components/hakumi_components/table/definition_types.rb
1155
+ - app/components/hakumi_components/table/display_rows.rb
1156
+ - app/components/hakumi_components/table/ellipsis_config.rb
1157
+ - app/components/hakumi_components/table/fixed_offset.rb
1158
+ - app/components/hakumi_components/table/header_cell.rb
1159
+ - app/components/hakumi_components/table/row_record.rb
1160
+ - app/components/hakumi_components/table/row_render_state.rb
1089
1161
  - app/components/hakumi_components/tabs/component.html.erb
1090
1162
  - app/components/hakumi_components/tabs/component.rb
1163
+ - app/components/hakumi_components/tabs/indicator_config.rb
1091
1164
  - app/components/hakumi_components/tabs/item/component.rb
1092
1165
  - app/components/hakumi_components/tag/component.rb
1093
1166
  - app/components/hakumi_components/tag/group/component.rb
@@ -1101,10 +1174,16 @@ files:
1101
1174
  - app/components/hakumi_components/tooltip/component.rb
1102
1175
  - app/components/hakumi_components/tour/component.html.erb
1103
1176
  - app/components/hakumi_components/tour/component.rb
1177
+ - app/components/hakumi_components/tour/step.rb
1178
+ - app/components/hakumi_components/transfer/coercion.rb
1104
1179
  - app/components/hakumi_components/transfer/component.html.erb
1105
1180
  - app/components/hakumi_components/transfer/component.rb
1181
+ - app/components/hakumi_components/transfer/item.rb
1182
+ - app/components/hakumi_components/transfer/operations.rb
1106
1183
  - app/components/hakumi_components/tree/component.html.erb
1107
1184
  - app/components/hakumi_components/tree/component.rb
1185
+ - app/components/hakumi_components/tree/concerns/node_rendering.rb
1186
+ - app/components/hakumi_components/tree/node.rb
1108
1187
  - app/components/hakumi_components/tree_select/component.html.erb
1109
1188
  - app/components/hakumi_components/tree_select/component.rb
1110
1189
  - app/components/hakumi_components/typography/base_component.rb
@@ -1114,8 +1193,12 @@ files:
1114
1193
  - app/components/hakumi_components/typography/title/component.rb
1115
1194
  - app/components/hakumi_components/upload/component.html.erb
1116
1195
  - app/components/hakumi_components/upload/component.rb
1196
+ - app/components/hakumi_components/upload/file_entry.rb
1117
1197
  - app/controllers/hakumi_components/components_controller.rb
1118
1198
  - app/form_builders/hakumi_components/form_builder.rb
1199
+ - app/form_builders/hakumi_components/form_builder/contracts.rb
1200
+ - app/form_builders/hakumi_components/form_builder/field_context.rb
1201
+ - app/form_builders/hakumi_components/form_builder/model_binding.rb
1119
1202
  - app/helpers/hakumi_components/form_helper.rb
1120
1203
  - app/javascript/hakumi_components/_controllers_manifest.js
1121
1204
  - app/javascript/hakumi_components/boot.js
@@ -1166,6 +1249,7 @@ files:
1166
1249
  - app/javascript/hakumi_components/controllers/hakumi/statistic_controller.js
1167
1250
  - app/javascript/hakumi_components/controllers/hakumi/steps_controller.js
1168
1251
  - app/javascript/hakumi_components/controllers/hakumi/switch_controller.js
1252
+ - app/javascript/hakumi_components/controllers/hakumi/table/editable.js
1169
1253
  - app/javascript/hakumi_components/controllers/hakumi/table_controller.js
1170
1254
  - app/javascript/hakumi_components/controllers/hakumi/tabs_controller.js
1171
1255
  - app/javascript/hakumi_components/controllers/hakumi/tag_controller.js
@@ -1189,6 +1273,7 @@ files:
1189
1273
  - app/javascript/hakumi_components/esbuild_loader.js
1190
1274
  - app/javascript/hakumi_components/index.js
1191
1275
  - app/javascript/hakumi_components/plugins/persisted_singletons.js
1276
+ - app/javascript/hakumi_components/utils/color_helper.js
1192
1277
  - app/javascript/hakumi_components/utils/date_helper.js
1193
1278
  - app/javascript/lib/validation_manager.js
1194
1279
  - app/javascript/stylesheets/_base.scss
@@ -1221,6 +1306,7 @@ files:
1221
1306
  - app/javascript/stylesheets/components/_empty.scss
1222
1307
  - app/javascript/stylesheets/components/_flex.scss
1223
1308
  - app/javascript/stylesheets/components/_float_button.scss
1309
+ - app/javascript/stylesheets/components/_form_item.scss
1224
1310
  - app/javascript/stylesheets/components/_grid.scss
1225
1311
  - app/javascript/stylesheets/components/_icon.scss
1226
1312
  - app/javascript/stylesheets/components/_image.scss
@@ -1289,147 +1375,25 @@ files:
1289
1375
  - lib/generators/hakumi_components/install_generator.rb
1290
1376
  - lib/hakumi_components.rb
1291
1377
  - lib/hakumi_components/documentation.rb
1378
+ - lib/hakumi_components/documentation/models.rb
1379
+ - lib/hakumi_components/documentation/node.rb
1292
1380
  - lib/hakumi_components/engine.rb
1381
+ - lib/hakumi_components/file_size_checker.rb
1382
+ - lib/hakumi_components/locales/en.yml
1293
1383
  - lib/hakumi_components/rails.rb
1294
1384
  - lib/hakumi_components/rails/attribute_introspection.rb
1385
+ - lib/hakumi_components/rails/model_reflection.rb
1295
1386
  - lib/hakumi_components/rails/validation_introspection.rb
1296
1387
  - lib/hakumi_components/rails/validation_mapper.rb
1388
+ - lib/hakumi_components/stylesheet_ownership_checker.rb
1389
+ - lib/hakumi_components/types.rb
1390
+ - lib/hakumi_components/types/form_field.rb
1391
+ - lib/hakumi_components/types/html.rb
1392
+ - lib/hakumi_components/types/rendering.rb
1393
+ - lib/hakumi_components/types/stimulus.rb
1394
+ - lib/hakumi_components/types/validation.rb
1297
1395
  - lib/hakumi_components/version.rb
1298
1396
  - lib/tasks/coverage.rake
1299
- - sig/action_view/tag_builder.rbs
1300
- - sig/active_support/concern_patch.rbs
1301
- - sig/generators/hakumi_components/install_generator.rbs
1302
- - sig/hakumi_components.rbs
1303
- - sig/hakumi_components/admin_panel/component.rbs
1304
- - sig/hakumi_components/affix/component.rbs
1305
- - sig/hakumi_components/alert/component.rbs
1306
- - sig/hakumi_components/anchor/component.rbs
1307
- - sig/hakumi_components/anchor/link/component.rbs
1308
- - sig/hakumi_components/autocomplete/component.rbs
1309
- - sig/hakumi_components/avatar/component.rbs
1310
- - sig/hakumi_components/badge/component.rbs
1311
- - sig/hakumi_components/base_component.rbs
1312
- - sig/hakumi_components/breadcrumb/component.rbs
1313
- - sig/hakumi_components/breadcrumb/item/component.rbs
1314
- - sig/hakumi_components/button/component.rbs
1315
- - sig/hakumi_components/calendar/component.rbs
1316
- - sig/hakumi_components/card/component.rbs
1317
- - sig/hakumi_components/card/grid/component.rbs
1318
- - sig/hakumi_components/card/meta/component.rbs
1319
- - sig/hakumi_components/carousel/component.rbs
1320
- - sig/hakumi_components/cascader/component.rbs
1321
- - sig/hakumi_components/checkbox/component.rbs
1322
- - sig/hakumi_components/checkbox/group/component.rbs
1323
- - sig/hakumi_components/collapse/component.rbs
1324
- - sig/hakumi_components/collapse/panel/component.rbs
1325
- - sig/hakumi_components/color_picker/component.rbs
1326
- - sig/hakumi_components/concerns/form_field.rbs
1327
- - sig/hakumi_components/container/component.rbs
1328
- - sig/hakumi_components/date_picker/component.rbs
1329
- - sig/hakumi_components/date_picker/range_picker.rbs
1330
- - sig/hakumi_components/date_picker/shared_rendering.rbs
1331
- - sig/hakumi_components/descriptions/component.rbs
1332
- - sig/hakumi_components/descriptions/item/component.rbs
1333
- - sig/hakumi_components/divider/component.rbs
1334
- - sig/hakumi_components/drawer/component.rbs
1335
- - sig/hakumi_components/dropdown/component.rbs
1336
- - sig/hakumi_components/dropdown/divider/component.rbs
1337
- - sig/hakumi_components/dropdown/item/component.rbs
1338
- - sig/hakumi_components/empty/component.rbs
1339
- - sig/hakumi_components/flex/component.rbs
1340
- - sig/hakumi_components/float_button/back_top/component.rbs
1341
- - sig/hakumi_components/float_button/component.rbs
1342
- - sig/hakumi_components/float_button/group/component.rbs
1343
- - sig/hakumi_components/float_button/group_cluster/component.rbs
1344
- - sig/hakumi_components/form/item/component.rbs
1345
- - sig/hakumi_components/form_builder.rbs
1346
- - sig/hakumi_components/grid/col/component.rbs
1347
- - sig/hakumi_components/grid/row/component.rbs
1348
- - sig/hakumi_components/icon/component.rbs
1349
- - sig/hakumi_components/image/component.rbs
1350
- - sig/hakumi_components/image/preview_group/component.rbs
1351
- - sig/hakumi_components/input/component.rbs
1352
- - sig/hakumi_components/input/password/component.rbs
1353
- - sig/hakumi_components/input/text_area/component.rbs
1354
- - sig/hakumi_components/input_number/component.rbs
1355
- - sig/hakumi_components/layout/component.rbs
1356
- - sig/hakumi_components/layout/content/component.rbs
1357
- - sig/hakumi_components/layout/footer/component.rbs
1358
- - sig/hakumi_components/layout/header/component.rbs
1359
- - sig/hakumi_components/layout/sider/component.rbs
1360
- - sig/hakumi_components/mentions/component.rbs
1361
- - sig/hakumi_components/menu/component.rbs
1362
- - sig/hakumi_components/menu/divider/component.rbs
1363
- - sig/hakumi_components/menu/group/component.rbs
1364
- - sig/hakumi_components/menu/item/component.rbs
1365
- - sig/hakumi_components/menu/sub_menu/component.rbs
1366
- - sig/hakumi_components/message/component.rbs
1367
- - sig/hakumi_components/modal/component.rbs
1368
- - sig/hakumi_components/modal/confirm/component.rbs
1369
- - sig/hakumi_components/modal/error/component.rbs
1370
- - sig/hakumi_components/modal/info/component.rbs
1371
- - sig/hakumi_components/modal/success/component.rbs
1372
- - sig/hakumi_components/modal/warning/component.rbs
1373
- - sig/hakumi_components/notification/component.rbs
1374
- - sig/hakumi_components/pagination/component.rbs
1375
- - sig/hakumi_components/popconfirm/component.rbs
1376
- - sig/hakumi_components/popover/component.rbs
1377
- - sig/hakumi_components/progress/component.rbs
1378
- - sig/hakumi_components/qr_code/component.rbs
1379
- - sig/hakumi_components/radio/component.rbs
1380
- - sig/hakumi_components/radio/group/component.rbs
1381
- - sig/hakumi_components/rails.rbs
1382
- - sig/hakumi_components/rails/attribute_introspection.rbs
1383
- - sig/hakumi_components/rails/validation_introspection.rbs
1384
- - sig/hakumi_components/rails/validation_mapper.rbs
1385
- - sig/hakumi_components/rate/component.rbs
1386
- - sig/hakumi_components/result/component.rbs
1387
- - sig/hakumi_components/segmented/component.rbs
1388
- - sig/hakumi_components/select/component.rbs
1389
- - sig/hakumi_components/skeleton/avatar/component.rbs
1390
- - sig/hakumi_components/skeleton/button/component.rbs
1391
- - sig/hakumi_components/skeleton/component.rbs
1392
- - sig/hakumi_components/skeleton/image/component.rbs
1393
- - sig/hakumi_components/skeleton/input/component.rbs
1394
- - sig/hakumi_components/skeleton/node/component.rbs
1395
- - sig/hakumi_components/slider/component.rbs
1396
- - sig/hakumi_components/space/compact/component.rbs
1397
- - sig/hakumi_components/space/component.rbs
1398
- - sig/hakumi_components/spin/component.rbs
1399
- - sig/hakumi_components/splitter/component.rbs
1400
- - sig/hakumi_components/splitter/panel/component.rbs
1401
- - sig/hakumi_components/statistic/component.rbs
1402
- - sig/hakumi_components/steps/component.rbs
1403
- - sig/hakumi_components/steps/item/component.rbs
1404
- - sig/hakumi_components/switch/component.rbs
1405
- - sig/hakumi_components/table/column/component.rbs
1406
- - sig/hakumi_components/table/column_group/component.rbs
1407
- - sig/hakumi_components/table/component.rbs
1408
- - sig/hakumi_components/table/concerns/columns.rbs
1409
- - sig/hakumi_components/table/concerns/editable.rbs
1410
- - sig/hakumi_components/table/concerns/ellipsis.rbs
1411
- - sig/hakumi_components/table/concerns/fixed_columns.rbs
1412
- - sig/hakumi_components/tabs/component.rbs
1413
- - sig/hakumi_components/tabs/item/component.rbs
1414
- - sig/hakumi_components/tag/component.rbs
1415
- - sig/hakumi_components/tag/group/component.rbs
1416
- - sig/hakumi_components/time_picker/component.rbs
1417
- - sig/hakumi_components/timeline/component.rbs
1418
- - sig/hakumi_components/timeline/item/component.rbs
1419
- - sig/hakumi_components/tooltip/component.rbs
1420
- - sig/hakumi_components/tour/component.rbs
1421
- - sig/hakumi_components/transfer/component.rbs
1422
- - sig/hakumi_components/tree/component.rbs
1423
- - sig/hakumi_components/tree_select/component.rbs
1424
- - sig/hakumi_components/typography/base_component.rbs
1425
- - sig/hakumi_components/typography/link/component.rbs
1426
- - sig/hakumi_components/typography/paragraph/component.rbs
1427
- - sig/hakumi_components/typography/text/component.rbs
1428
- - sig/hakumi_components/typography/title/component.rbs
1429
- - sig/hakumi_components/upload/component.rbs
1430
- - sig/rails.rbs
1431
- - sig/rails/active_model/validations/comparison_validator.rbs
1432
- - sig/view_component/base.rbs
1433
1397
  homepage: https://github.com/hakumi-dev/hakumi-components
1434
1398
  licenses:
1435
1399
  - MIT
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActionView
4
- module Helpers
5
- class TagBuilder
6
- def method_missing: (Symbol name, *Object args, **hakumi_html_options) -> String
7
- end
8
-
9
- module TagHelper
10
- def tag: () -> TagBuilder
11
- def content_tag: (Symbol tag_name, String? content, **Object attributes) -> String
12
- def content_tag: (Symbol tag_name, **Object attributes) { () -> String? } -> String
13
- def safe_join: (Array[Object] array, ?String separator) -> String
14
- end
15
-
16
- module AssetTagHelper
17
- def image_tag: (String src, **Object options) -> String
18
- end
19
-
20
- module CaptureHelper
21
- def capture: () { () -> String } -> String
22
- end
23
- end
24
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveSupport
4
- module Concern
5
- def included: (?Module base) { () -> void } -> void
6
- end
7
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- class InstallGenerator < Rails::Generators::Base
5
- def add_npm_package: () -> void
6
- def setup_javascript: () -> void
7
- def setup_stylesheets: () -> void
8
- def setup_form_builder: () -> void
9
- def show_post_install: () -> void
10
- end
11
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module AdminPanel
5
- class Component < HakumiComponents::BaseComponent
6
- # Extracts locals from controller params for dynamic rendering
7
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
8
-
9
- @title: String
10
- @enabled: bool
11
- @html_options: hakumi_html_options
12
-
13
- def initialize: (
14
- ?title: String,
15
- ?enabled: bool,
16
- **hakumi_html_options html_options
17
- ) -> void
18
-
19
- def render?: () -> bool
20
-
21
- private
22
-
23
- attr_reader title: String
24
-
25
- def wrapper_attributes: () -> hakumi_html_options
26
- end
27
- end
28
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Affix
5
- class Component < HakumiComponents::BaseComponent
6
- # Extracts locals from controller params for dynamic rendering
7
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
8
-
9
- @body: String?
10
- @offset_top: Float?
11
- @offset_bottom: Float?
12
- @target_selector: String?
13
- @z_index: Integer?
14
- @on_change: String?
15
- @html_options: hakumi_html_options
16
-
17
- def initialize: (
18
- ?body: String?,
19
- ?offset_top: (Float | Integer | String)?,
20
- ?offset_bottom: (Float | Integer | String)?,
21
- ?target_selector: String?,
22
- ?z_index: (Integer | String)?,
23
- ?on_change: String?,
24
- **hakumi_html_options html_options
25
- ) -> void
26
-
27
- def root_attributes: () -> hakumi_html_options
28
-
29
- def content_value: () -> String?
30
-
31
- private
32
-
33
- def data_attributes: () -> hakumi_data_attributes
34
-
35
- def normalize_numeric: ((Float | Integer | String)? value) -> (Float | Integer)?
36
-
37
- def normalize_offsets!: () -> void
38
-
39
- def validate_props!: () -> void
40
-
41
- def append_action: (String? existing, String action) -> String
42
- end
43
- end
44
- end
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Alert
5
- class Component < HakumiComponents::BaseComponent
6
- type alert_type = :success | :info | :warning | :error
7
-
8
- TYPES: Array[alert_type]
9
-
10
- # Extracts locals from controller params for dynamic rendering
11
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
12
-
13
- @type: alert_type
14
- @message: String?
15
- @description: String?
16
- @show_icon: bool
17
- @icon: hakumi_icon?
18
- @closable: bool
19
- @close_text: String?
20
- @banner: bool
21
- @action: untyped
22
- @html_options: hakumi_html_options
23
-
24
- def initialize: (
25
- ?type: alert_type?,
26
- ?message: String?,
27
- ?description: String?,
28
- ?show_icon: bool?,
29
- ?icon: hakumi_icon?,
30
- ?closable: bool,
31
- ?close_text: String?,
32
- ?banner: bool,
33
- ?action: untyped,
34
- **hakumi_html_options html_options
35
- ) -> void
36
-
37
- private
38
-
39
- def validate_props!: () -> void
40
-
41
- def wrapper_classes: () -> String
42
-
43
- def wrapper_attributes: () -> hakumi_html_options
44
-
45
- def message_content: () -> String?
46
-
47
- def description_present?: () -> bool
48
-
49
- def description_content: () -> String?
50
-
51
- def action_present?: () -> bool
52
-
53
- def action_content: () -> String?
54
-
55
- def show_icon?: () -> bool
56
-
57
- def icon_element: () -> String?
58
-
59
- def default_icon: () -> Symbol
60
-
61
- def close_button_classes: () -> String
62
- end
63
- end
64
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Anchor
5
- class Component < HakumiComponents::BaseComponent
6
- type anchor_direction = :vertical | :horizontal
7
-
8
- DIRECTIONS: Array[anchor_direction]
9
-
10
- @affix: bool
11
- @bounds: (Integer | Float)
12
- @offset_top: (Integer | Float)
13
- @target_offset: (Integer | Float)?
14
- @direction: anchor_direction
15
- @replace: bool
16
- @html_options: hakumi_html_options
17
-
18
- def initialize: (
19
- ?affix: bool,
20
- ?bounds: (Integer | Float),
21
- ?offset_top: (Integer | Float),
22
- ?target_offset: (Integer | Float)?,
23
- ?direction: anchor_direction,
24
- ?replace: bool,
25
- **hakumi_html_options html_options
26
- ) -> void
27
-
28
- def wrapper_classes: () -> String
29
-
30
- def anchor_classes: () -> String
31
-
32
- def stimulus_controller: () -> String
33
-
34
- def stimulus_values: () -> Hash[Symbol, untyped]
35
-
36
- def wrapper_attributes: () -> hakumi_html_options
37
-
38
- def horizontal?: () -> bool
39
-
40
- private
41
-
42
- def validate_props!: () -> void
43
- end
44
- end
45
- end