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
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Anchor
5
- module Link
6
- class Component < HakumiComponents::BaseComponent
7
- @href: String
8
- @title: String
9
- @target: String?
10
- @html_options: hakumi_html_options
11
-
12
- def initialize: (
13
- href: String,
14
- title: String,
15
- ?target: String?,
16
- **hakumi_html_options html_options
17
- ) -> void
18
-
19
- attr_reader href: String
20
- attr_reader title: String
21
- attr_reader target: String?
22
-
23
- def link_classes: () -> String
24
-
25
- def title_classes: () -> String
26
-
27
- def has_children?: () -> bool
28
- end
29
- end
30
- end
31
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Autocomplete
5
- class Component < HakumiComponents::BaseComponent
6
- type autocomplete_variant = :outlined | :filled | :borderless | :underlined
7
- type autocomplete_status = :error | :warning
8
- type filter_mode = :contains | :starts_with
9
-
10
- SIZES: Array[hakumi_size_standard]
11
- VARIANTS: Array[autocomplete_variant]
12
- STATUSES: Array[autocomplete_status]
13
- FILTER_MODES: Array[filter_mode]
14
-
15
- @name: String
16
- @options: Array[untyped]
17
- @value: String?
18
- @placeholder: String?
19
- @size: hakumi_size_standard
20
- @variant: autocomplete_variant
21
- @status: autocomplete_status?
22
- @disabled: bool
23
- @allow_clear: bool
24
- @clear_icon: hakumi_icon
25
- @input_renderer: Proc?
26
- @case_sensitive: bool
27
- @filter_mode: filter_mode
28
- @not_found_content: String
29
- @html_options: hakumi_html_options
30
-
31
- def initialize: (
32
- name: String,
33
- ?options: Array[untyped],
34
- ?value: String?,
35
- ?placeholder: String?,
36
- ?size: hakumi_size_standard,
37
- ?variant: autocomplete_variant,
38
- ?status: autocomplete_status?,
39
- ?disabled: bool,
40
- ?allow_clear: bool,
41
- ?clear_icon: hakumi_icon,
42
- ?input_renderer: Proc?,
43
- ?case_sensitive: bool,
44
- ?filter_mode: filter_mode,
45
- ?not_found_content: String,
46
- **hakumi_html_options html_options
47
- ) -> void
48
-
49
- private
50
-
51
- def validate_props!: () -> void
52
- def wrapper_classes: () -> String
53
- def wrapper_attributes: () -> hakumi_html_options
54
- def input_attributes: () -> hakumi_html_options
55
- def input_classes: () -> String
56
- def dropdown_id: () -> String
57
- def allow_clear?: () -> bool
58
- def custom_input_renderer?: () -> bool
59
- def input_renderer: () -> Proc?
60
- def disabled?: () -> bool
61
- def clear_icon: () -> hakumi_icon
62
- def not_found_content: () -> String
63
- def normalized_items: () -> Array[Hash[Symbol, untyped]]
64
- def normalize_group_options: (Array[untyped] options) -> Array[Hash[Symbol, untyped]]
65
- def normalize_simple_option: (untyped opt) -> Hash[Symbol, untyped]?
66
- end
67
- end
68
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Avatar
5
- class Component < HakumiComponents::BaseComponent
6
- type avatar_shape = :circle | :square
7
- type avatar_size = :small | :default | :large
8
-
9
- SHAPES: Array[avatar_shape]
10
- SIZES: Array[avatar_size]
11
-
12
- @shape: avatar_shape
13
- @size: (avatar_size | Integer)
14
- @src: String?
15
- @icon: hakumi_icon?
16
- @alt: String?
17
- @html_options: hakumi_html_options
18
-
19
- def initialize: (
20
- ?shape: avatar_shape,
21
- ?size: (avatar_size | Integer),
22
- ?src: String?,
23
- ?icon: hakumi_icon?,
24
- ?alt: String?,
25
- **hakumi_html_options html_options
26
- ) -> void
27
-
28
- def call: () -> String
29
-
30
- private
31
-
32
- def validate_props!: () -> void
33
-
34
- def wrapper_classes: () -> String
35
-
36
- def content_wrapper: () -> String
37
-
38
- # Type assertion: case statement always returns Integer despite @size being (avatar_size | Integer)
39
- def avatar_size: () -> (avatar_size | Integer)
40
-
41
- def wrapper_attributes: () -> hakumi_html_options
42
- end
43
- end
44
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Badge
5
- class Component < HakumiComponents::BaseComponent
6
- type badge_status = :success | :processing | :default | :error | :warning
7
-
8
- @count: (Integer | String)?
9
- @dot: bool
10
- @overflow_count: Integer
11
- @status: badge_status?
12
- @text: String?
13
- @color: hakumi_color?
14
- @show_zero: bool
15
- @icon: hakumi_icon?
16
- @html_options: hakumi_html_options
17
-
18
- def initialize: (
19
- ?count: (Integer | String)?,
20
- ?dot: bool,
21
- ?overflow_count: Integer,
22
- ?status: badge_status?,
23
- ?text: String?,
24
- ?color: hakumi_color?,
25
- ?show_zero: bool,
26
- ?icon: hakumi_icon?,
27
- **hakumi_html_options html_options
28
- ) -> void
29
-
30
- def call: () -> String
31
-
32
- private
33
-
34
- def badge_element: () -> String?
35
-
36
- def status_text_element: () -> String?
37
-
38
- def display_count: () -> (Integer | String | nil)
39
- end
40
- end
41
- end
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- class BaseComponent < ViewComponent::Base
5
- # Core class methods
6
- def self.inherited: (Class klass) -> void
7
-
8
- # Instance methods
9
- # Generate class names with the hakumi- prefix
10
- # @param base [String] Base class name (e.g., 'btn', 'icon')
11
- # @param modifiers [Hash] Hash of modifier keys and their values (Symbol, String, Integer, or bool)
12
- # @param extras [Array<String>] Additional classes to append
13
- # @return [String] Combined class string
14
- def class_names: (String base, ?Hash[Symbol, (Symbol | String | Integer | bool)] modifiers, ?Array[String] extras) -> String
15
-
16
- # Merge HTML attributes with defaults
17
- # @param defaults [Hash] Default attributes
18
- # @param overrides [Hash] User-provided attributes
19
- # @return [Hash] Merged attributes
20
- def merge_attributes: (hakumi_html_options defaults, hakumi_html_options overrides) -> hakumi_html_options
21
-
22
- # Internal helper to check presence without clobbering ActiveSupport#present?
23
- # Accepts any value type since it's a generic utility method
24
- # @param value [untyped] Value to check
25
- # @return [Boolean]
26
- def value_present?: (untyped value) -> bool
27
-
28
- # Validate required props
29
- # @param props [Array<Symbol>] List of required prop names
30
- # @raise [ArgumentError] if any prop is missing
31
- def validate_required!: (*Symbol props) -> void
32
-
33
- # Validate prop is one of allowed values
34
- # @param prop [Symbol] Prop name
35
- # @param allowed [Array] Allowed values (typically Symbol enums, but can include strings/integers)
36
- # @raise [ArgumentError] if value is not allowed
37
- def validate_inclusion!: (Symbol prop, Array[Symbol | String | Integer | bool] allowed) -> void
38
-
39
- # Ensure attrs has a DOM ID if it has a Stimulus controller
40
- # @param attrs [Hash] Attributes hash
41
- # @return [void]
42
- def ensure_dom_id!: (hakumi_html_options attrs) -> void
43
-
44
- # Generate a unique ID with a prefix
45
- # @param prefix [String] Prefix for the ID
46
- # @param length [Integer] Length of the random hex (default: 4)
47
- # @return [String] Generated ID
48
- def generate_id: (String prefix, ?length: Integer) -> String
49
-
50
- # Render a value that can be a String, ViewComponent, or other renderable object
51
- # Accepts: String, ActiveSupport::SafeBuffer, ViewComponent, or any object with to_s
52
- # @param value [untyped] Value to render (String, ViewComponent, etc.)
53
- # @return [String, nil] Rendered value or nil if empty
54
- def render_value: (untyped value) -> (String | nil)
55
-
56
- # Convert size string/symbol to integer pixels
57
- # Useful for components that accept both symbolic (:small, :large) and numeric sizes
58
- # @param size [Symbol, Integer] Size value
59
- # @param mapping [Hash] Size to pixel mapping
60
- # @return [Integer] Size in pixels
61
- def size_to_pixels: ((Symbol | Integer) size, ?Hash[Symbol, Integer] mapping) -> Integer
62
-
63
- # Convert dimension value to CSS string
64
- # @param value [Numeric, String, nil] Dimension value
65
- # @return [String, nil] CSS dimension string
66
- def dimension_to_css: ((Numeric | String | nil) value) -> String?
67
-
68
- # Cast a value to boolean using ActiveModel::Type::Boolean
69
- # @param value [untyped] Value to cast
70
- # @return [Boolean] Casted boolean value
71
- def cast_boolean: (untyped value) -> bool
72
-
73
- # Build inline style string from array or hash
74
- # @param styles [Array<String>, Hash] Styles as array of CSS strings or hash of property => value
75
- # @return [String, nil] Combined style string
76
- def build_inline_style: ((Array[String] | Hash[Symbol | String, (String | Integer | Float)]) styles) -> String?
77
-
78
- private
79
-
80
- def prepare_data_attributes: (hakumi_html_options attrs) -> hakumi_html_options
81
- end
82
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Breadcrumb
5
- class Component < HakumiComponents::BaseComponent
6
- @separator: String
7
- @html_options: hakumi_html_options
8
-
9
- def initialize: (
10
- ?separator: String,
11
- **hakumi_html_options html_options
12
- ) -> void
13
-
14
- attr_reader separator: String
15
-
16
- def breadcrumb_classes: () -> String
17
-
18
- def wrapper_attributes: () -> hakumi_html_options
19
- end
20
- end
21
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Breadcrumb
5
- module Item
6
- class Component < HakumiComponents::BaseComponent
7
- @title: String?
8
- @href: String?
9
- @target: String?
10
- @menu: Array[untyped]?
11
- @html_options: hakumi_html_options
12
-
13
- def initialize: (
14
- ?title: String?,
15
- ?href: String?,
16
- ?target: String?,
17
- ?menu: Array[untyped]?,
18
- **hakumi_html_options html_options
19
- ) -> void
20
-
21
- attr_reader title: String?
22
- attr_reader href: String?
23
- attr_reader target: String?
24
- attr_reader menu: Array[untyped]?
25
-
26
- def item_classes: () -> String
27
-
28
- def link?: () -> bool
29
-
30
- def menu?: () -> bool
31
-
32
- def display_title: () -> String?
33
- end
34
- end
35
- end
36
- end
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Button
5
- class Component < HakumiComponents::BaseComponent
6
- type button_type = :primary | :default | :dashed | :text | :link
7
- type button_size = :small | :middle | :large
8
- type button_shape = :default | :circle | :round
9
- type html_button_type = :button | :submit | :reset
10
-
11
- TYPES: Array[button_type]
12
- SIZES: Array[button_size]
13
- SHAPES: Array[button_shape]
14
- HTML_TYPES: Array[html_button_type]
15
-
16
- @type: button_type
17
- @size: button_size
18
- @html_type: html_button_type
19
- @href: String?
20
- @disabled: bool
21
- @loading: bool
22
- @danger: bool
23
- @block: bool
24
- @icon: (String | Symbol | untyped)?
25
- @shape: button_shape
26
- @html_options: hakumi_html_options
27
-
28
- def initialize: (
29
- ?type: button_type,
30
- ?size: button_size,
31
- ?html_type: html_button_type,
32
- ?href: String?,
33
- ?disabled: bool,
34
- ?loading: bool,
35
- ?danger: bool,
36
- ?block: bool,
37
- ?icon: (String | Symbol | untyped)?,
38
- ?shape: button_shape,
39
- **hakumi_html_options html_options
40
- ) -> void
41
-
42
- def call: () -> String
43
-
44
- private
45
-
46
- def validate_props!: () -> void
47
- def tag_name: () -> Symbol
48
- def wrapper_classes: () -> String
49
- def wrapper_attributes: () -> hakumi_html_options
50
- def content_wrapper: () -> String
51
- def icon_element: () -> String?
52
- def loading_icon: () -> String
53
- def text_element: () -> String?
54
- end
55
- end
56
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Calendar
5
- class Component < HakumiComponents::BaseComponent
6
- type calendar_mode = "month" | "year"
7
- type calendar_value = Date | Time | String
8
-
9
- MODES: Array[String]
10
-
11
- @value: calendar_value?
12
- @default_value: calendar_value?
13
- @mode: calendar_mode
14
- @full_screen: bool
15
- @disable_date: Proc?
16
- @header_render: Proc?
17
- @html_options: hakumi_html_options
18
-
19
- def initialize: (
20
- ?value: calendar_value?,
21
- ?default_value: calendar_value?,
22
- ?mode: calendar_mode,
23
- ?full_screen: bool,
24
- ?disable_date: Proc?,
25
- ?header_render: Proc?,
26
- **hakumi_html_options html_options
27
- ) -> void
28
-
29
- def call: () -> String
30
-
31
- private
32
-
33
- def validate_props!: () -> void
34
- def wrapper_classes: () -> String
35
- def wrapper_attributes: () -> hakumi_html_options
36
- def render_header: () -> String
37
- def render_body: () -> String
38
- def current_date: () -> (Date | Time | String)
39
- end
40
- end
41
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Card
5
- class Component < HakumiComponents::BaseComponent
6
- type card_size = :default | :small
7
- type card_type = :inner | nil
8
-
9
- @title: (String | untyped)?
10
- @extra: (String | untyped)?
11
- @bordered: bool
12
- @hoverable: bool
13
- @loading: bool
14
- @size: card_size
15
- @type: card_type
16
- @actions: Array[untyped]
17
- @cover: (String | untyped)?
18
- @href: String?
19
- @target: String?
20
- @html_options: hakumi_html_options
21
-
22
- def initialize: (
23
- ?title: (String | untyped)?,
24
- ?extra: (String | untyped)?,
25
- ?bordered: bool,
26
- ?hoverable: bool,
27
- ?loading: bool,
28
- ?size: card_size,
29
- ?type: card_type,
30
- ?actions: Array[untyped],
31
- ?cover: (String | untyped)?,
32
- ?href: String?,
33
- ?target: String?,
34
- **hakumi_html_options html_options
35
- ) -> void
36
-
37
- private
38
-
39
- def classes: () -> String
40
-
41
- def head_classes: () -> String
42
-
43
- def body_classes: () -> String
44
-
45
- def render_title: () -> (String | untyped)?
46
-
47
- def render_extra: () -> (String | untyped)?
48
- end
49
- end
50
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Card
5
- module Grid
6
- class Component < HakumiComponents::BaseComponent
7
- @hoverable: bool
8
- @html_options: hakumi_html_options
9
-
10
- def initialize: (
11
- ?hoverable: bool,
12
- **hakumi_html_options html_options
13
- ) -> void
14
-
15
- private
16
-
17
- def classes: () -> String
18
- end
19
- end
20
- end
21
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Card
5
- module Meta
6
- class Component < HakumiComponents::BaseComponent
7
- @title: (String | untyped)?
8
- @description: (String | untyped)?
9
- @avatar: (String | untyped)?
10
- @html_options: hakumi_html_options
11
-
12
- def initialize: (
13
- ?title: (String | untyped)?,
14
- ?description: (String | untyped)?,
15
- ?avatar: (String | untyped)?,
16
- **hakumi_html_options html_options
17
- ) -> void
18
-
19
- private
20
-
21
- def classes: () -> String
22
- end
23
- end
24
- end
25
- end
@@ -1,88 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Carousel
5
- class Component < HakumiComponents::BaseComponent
6
- type carousel_effect = :scrollx | :fade
7
- type carousel_dot_placement = :top | :bottom | :start | :end
8
-
9
- EFFECTS: Array[carousel_effect]
10
- DOT_PLACEMENTS: Array[carousel_dot_placement]
11
-
12
- @autoplay: bool
13
- @autoplay_speed: Integer
14
- @dot_placement: carousel_dot_placement
15
- @dots: bool
16
- @dots_class: String?
17
- @arrows: bool
18
- @adaptive_height: bool
19
- @draggable: bool
20
- @infinite: bool
21
- @fade: bool
22
- @effect: carousel_effect
23
- @speed: Integer
24
- @easing: String
25
- @wait_for_animate: bool
26
- @autoplay_dot_duration: bool
27
- @html_options: hakumi_html_options
28
-
29
- def initialize: (
30
- ?autoplay: (bool | Hash[Symbol, untyped]),
31
- ?autoplay_speed: Integer,
32
- ?dot_placement: carousel_dot_placement,
33
- ?dots: (bool | Hash[Symbol, untyped]),
34
- ?dots_class: String?,
35
- ?arrows: bool,
36
- ?adaptive_height: bool,
37
- ?draggable: bool,
38
- ?infinite: bool,
39
- ?fade: bool?,
40
- ?effect: carousel_effect,
41
- ?speed: Integer,
42
- ?easing: String,
43
- ?wait_for_animate: bool,
44
- **hakumi_html_options html_options
45
- ) -> void
46
-
47
- attr_reader autoplay: bool
48
- attr_reader autoplay_speed: Integer
49
- attr_reader dot_placement: carousel_dot_placement
50
- attr_reader dots: bool
51
- attr_reader dots_class: String?
52
- attr_reader arrows: bool
53
- attr_reader adaptive_height: bool
54
- attr_reader draggable: bool
55
- attr_reader infinite: bool
56
- attr_reader fade: bool
57
- attr_reader effect: carousel_effect
58
- attr_reader speed: Integer
59
- attr_reader easing: String
60
- attr_reader wait_for_animate: bool
61
- attr_reader autoplay_dot_duration: bool
62
-
63
- def carousel_classes: () -> String
64
-
65
- def dots?: () -> bool
66
-
67
- def arrows?: () -> bool
68
-
69
- def dots_classes: () -> String
70
-
71
- def slide_classes: (Integer index) -> String
72
-
73
- def dot_classes: (Integer index) -> String
74
-
75
- def stimulus_controller: () -> String
76
-
77
- def stimulus_values: () -> Hash[Symbol, untyped]
78
-
79
- def stimulus_data_attributes: () -> Hash[String, untyped]
80
-
81
- def wrapper_attributes: () -> hakumi_html_options
82
-
83
- private
84
-
85
- def validate_props!: () -> void
86
- end
87
- end
88
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Cascader
5
- class Component < HakumiComponents::BaseComponent
6
- type cascader_option = {
7
- value: String,
8
- label: String,
9
- children: Array[cascader_option]?
10
- }
11
-
12
- SIZES: Array[hakumi_size_standard]
13
- TRIGGERS: Array[hakumi_trigger]
14
-
15
- @name: String
16
- @options: Array[Hash[Symbol, untyped]]
17
- @value: Array[String | Integer | Float]
18
- @placeholder: String
19
- @size: hakumi_size_standard
20
- @disabled: bool
21
- @allow_clear: bool
22
- @show_search: bool
23
- @change_on_select: bool
24
- @expand_trigger: hakumi_trigger
25
- @display_render: Proc?
26
- @html_options: hakumi_html_options
27
-
28
- def initialize: (
29
- ?name: String?,
30
- ?options: Array[Hash[Symbol, untyped]],
31
- ?value: Array[String | Integer | Float],
32
- ?placeholder: String,
33
- ?size: hakumi_size_standard,
34
- ?disabled: bool,
35
- ?allow_clear: bool,
36
- ?show_search: bool,
37
- ?change_on_select: bool,
38
- ?expand_trigger: hakumi_trigger,
39
- ?display_render: Proc?,
40
- **hakumi_html_options html_options
41
- ) -> void
42
-
43
- def validate_props!: () -> void
44
-
45
- def wrapper_classes: () -> String
46
-
47
- def wrapper_attributes: () -> hakumi_html_options
48
-
49
- def selected_label: () -> String?
50
- end
51
- end
52
- end