fernandes-ui 0.1.1 → 0.1.4

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 (796) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -0
  3. data/app/assets/javascripts/ui.esm.js +15 -9
  4. data/app/assets/javascripts/ui.js +15 -9
  5. data/app/behaviors/ui/accordion_behavior.rb +50 -26
  6. data/app/behaviors/ui/accordion_content_behavior.rb +58 -58
  7. data/app/behaviors/ui/accordion_item_behavior.rb +38 -38
  8. data/app/behaviors/ui/accordion_trigger_behavior.rb +65 -65
  9. data/app/behaviors/ui/alert_behavior.rb +53 -36
  10. data/app/behaviors/ui/alert_description_behavior.rb +25 -25
  11. data/app/behaviors/ui/alert_dialog_action_behavior.rb +21 -21
  12. data/app/behaviors/ui/alert_dialog_behavior.rb +58 -33
  13. data/app/behaviors/ui/alert_dialog_cancel_behavior.rb +21 -21
  14. data/app/behaviors/ui/alert_dialog_content_behavior.rb +34 -34
  15. data/app/behaviors/ui/alert_dialog_description_behavior.rb +19 -19
  16. data/app/behaviors/ui/alert_dialog_footer_behavior.rb +20 -20
  17. data/app/behaviors/ui/alert_dialog_header_behavior.rb +19 -19
  18. data/app/behaviors/ui/alert_dialog_overlay_behavior.rb +56 -56
  19. data/app/behaviors/ui/alert_dialog_title_behavior.rb +19 -19
  20. data/app/behaviors/ui/alert_dialog_trigger_behavior.rb +31 -31
  21. data/app/behaviors/ui/alert_title_behavior.rb +25 -25
  22. data/app/behaviors/ui/aspect_ratio_behavior.rb +46 -38
  23. data/app/behaviors/ui/avatar_behavior.rb +44 -37
  24. data/app/behaviors/ui/avatar_fallback_behavior.rb +37 -37
  25. data/app/behaviors/ui/avatar_image_behavior.rb +40 -40
  26. data/app/behaviors/ui/badge_behavior.rb +50 -43
  27. data/app/behaviors/ui/blockquote_behavior.rb +25 -17
  28. data/app/behaviors/ui/breadcrumb_behavior.rb +35 -19
  29. data/app/behaviors/ui/breadcrumb_ellipsis_behavior.rb +28 -28
  30. data/app/behaviors/ui/breadcrumb_item_behavior.rb +26 -26
  31. data/app/behaviors/ui/breadcrumb_link_behavior.rb +27 -27
  32. data/app/behaviors/ui/breadcrumb_list_behavior.rb +26 -26
  33. data/app/behaviors/ui/breadcrumb_page_behavior.rb +29 -29
  34. data/app/behaviors/ui/breadcrumb_separator_behavior.rb +28 -28
  35. data/app/behaviors/ui/button_behavior.rb +94 -82
  36. data/app/behaviors/ui/button_group_behavior.rb +48 -48
  37. data/app/behaviors/ui/button_group_separator_behavior.rb +29 -29
  38. data/app/behaviors/ui/button_group_text_behavior.rb +29 -29
  39. data/app/behaviors/ui/calendar_behavior.rb +131 -104
  40. data/app/behaviors/ui/card_action_behavior.rb +26 -26
  41. data/app/behaviors/ui/card_behavior.rb +40 -26
  42. data/app/behaviors/ui/card_content_behavior.rb +26 -26
  43. data/app/behaviors/ui/card_description_behavior.rb +26 -26
  44. data/app/behaviors/ui/card_footer_behavior.rb +26 -26
  45. data/app/behaviors/ui/card_header_behavior.rb +26 -26
  46. data/app/behaviors/ui/card_title_behavior.rb +26 -26
  47. data/app/behaviors/ui/carousel_behavior.rb +74 -48
  48. data/app/behaviors/ui/carousel_content_behavior.rb +53 -53
  49. data/app/behaviors/ui/carousel_item_behavior.rb +20 -20
  50. data/app/behaviors/ui/carousel_next_behavior.rb +31 -31
  51. data/app/behaviors/ui/carousel_previous_behavior.rb +31 -31
  52. data/app/behaviors/ui/checkbox_behavior.rb +54 -38
  53. data/app/behaviors/ui/collapsible_behavior.rb +49 -34
  54. data/app/behaviors/ui/collapsible_content_behavior.rb +31 -31
  55. data/app/behaviors/ui/collapsible_trigger_behavior.rb +47 -47
  56. data/app/behaviors/ui/command_behavior.rb +56 -29
  57. data/app/behaviors/ui/command_dialog_behavior.rb +44 -28
  58. data/app/behaviors/ui/command_empty_behavior.rb +28 -28
  59. data/app/behaviors/ui/command_group_behavior.rb +34 -34
  60. data/app/behaviors/ui/command_input_behavior.rb +40 -40
  61. data/app/behaviors/ui/command_item_behavior.rb +39 -39
  62. data/app/behaviors/ui/command_list_behavior.rb +30 -30
  63. data/app/behaviors/ui/command_separator_behavior.rb +23 -23
  64. data/app/behaviors/ui/command_shortcut_behavior.rb +22 -22
  65. data/app/behaviors/ui/context_menu_behavior.rb +55 -28
  66. data/app/behaviors/ui/context_menu_checkbox_item_behavior.rb +32 -32
  67. data/app/behaviors/ui/context_menu_content_behavior.rb +32 -32
  68. data/app/behaviors/ui/context_menu_item_behavior.rb +34 -34
  69. data/app/behaviors/ui/context_menu_label_behavior.rb +28 -28
  70. data/app/behaviors/ui/context_menu_radio_group_behavior.rb +17 -17
  71. data/app/behaviors/ui/context_menu_radio_item_behavior.rb +32 -32
  72. data/app/behaviors/ui/context_menu_separator_behavior.rb +18 -18
  73. data/app/behaviors/ui/context_menu_shortcut_behavior.rb +17 -17
  74. data/app/behaviors/ui/context_menu_trigger_behavior.rb +28 -28
  75. data/app/behaviors/ui/date_picker_behavior.rb +95 -78
  76. data/app/behaviors/ui/date_picker_input_behavior.rb +56 -56
  77. data/app/behaviors/ui/date_picker_trigger_behavior.rb +56 -56
  78. data/app/behaviors/ui/dialog_behavior.rb +67 -42
  79. data/app/behaviors/ui/dialog_content_behavior.rb +38 -38
  80. data/app/behaviors/ui/dialog_footer_behavior.rb +20 -20
  81. data/app/behaviors/ui/dialog_header_behavior.rb +20 -20
  82. data/app/behaviors/ui/dialog_overlay_behavior.rb +57 -57
  83. data/app/behaviors/ui/drawer_behavior.rb +79 -52
  84. data/app/behaviors/ui/drawer_close_behavior.rb +8 -8
  85. data/app/behaviors/ui/drawer_content_behavior.rb +90 -90
  86. data/app/behaviors/ui/drawer_description_behavior.rb +17 -17
  87. data/app/behaviors/ui/drawer_footer_behavior.rb +17 -17
  88. data/app/behaviors/ui/drawer_handle_behavior.rb +33 -33
  89. data/app/behaviors/ui/drawer_header_behavior.rb +23 -23
  90. data/app/behaviors/ui/drawer_overlay_behavior.rb +63 -63
  91. data/app/behaviors/ui/drawer_title_behavior.rb +20 -20
  92. data/app/behaviors/ui/drawer_trigger_behavior.rb +15 -15
  93. data/app/behaviors/ui/dropdown_menu_behavior.rb +59 -37
  94. data/app/behaviors/ui/dropdown_menu_checkbox_item_behavior.rb +37 -39
  95. data/app/behaviors/ui/dropdown_menu_content_behavior.rb +32 -32
  96. data/app/behaviors/ui/dropdown_menu_item_behavior.rb +34 -34
  97. data/app/behaviors/ui/dropdown_menu_label_behavior.rb +25 -25
  98. data/app/behaviors/ui/dropdown_menu_radio_group_behavior.rb +17 -17
  99. data/app/behaviors/ui/dropdown_menu_radio_item_behavior.rb +37 -39
  100. data/app/behaviors/ui/dropdown_menu_separator_behavior.rb +19 -19
  101. data/app/behaviors/ui/dropdown_menu_shortcut_behavior.rb +17 -17
  102. data/app/behaviors/ui/dropdown_menu_sub_behavior.rb +17 -17
  103. data/app/behaviors/ui/dropdown_menu_sub_content_behavior.rb +33 -33
  104. data/app/behaviors/ui/dropdown_menu_sub_trigger_behavior.rb +30 -30
  105. data/app/behaviors/ui/dropdown_menu_trigger_behavior.rb +39 -39
  106. data/app/behaviors/ui/empty_behavior.rb +111 -100
  107. data/app/behaviors/ui/field_behavior.rb +51 -37
  108. data/app/behaviors/ui/field_content_behavior.rb +18 -20
  109. data/app/behaviors/ui/field_description_behavior.rb +18 -20
  110. data/app/behaviors/ui/field_error_behavior.rb +42 -37
  111. data/app/behaviors/ui/field_group_behavior.rb +18 -20
  112. data/app/behaviors/ui/field_label_behavior.rb +19 -21
  113. data/app/behaviors/ui/field_legend_behavior.rb +26 -22
  114. data/app/behaviors/ui/field_separator_behavior.rb +24 -26
  115. data/app/behaviors/ui/field_set_behavior.rb +24 -20
  116. data/app/behaviors/ui/field_title_behavior.rb +18 -20
  117. data/app/behaviors/ui/h1_behavior.rb +25 -17
  118. data/app/behaviors/ui/h2_behavior.rb +25 -17
  119. data/app/behaviors/ui/h3_behavior.rb +25 -17
  120. data/app/behaviors/ui/h4_behavior.rb +25 -17
  121. data/app/behaviors/ui/hover_card_behavior.rb +41 -25
  122. data/app/behaviors/ui/hover_card_content_behavior.rb +35 -35
  123. data/app/behaviors/ui/hover_card_trigger_behavior.rb +38 -38
  124. data/app/behaviors/ui/inline_code_behavior.rb +25 -17
  125. data/app/behaviors/ui/input_behavior.rb +52 -42
  126. data/app/behaviors/ui/input_group_addon_behavior.rb +9 -2
  127. data/app/behaviors/ui/input_group_behavior.rb +3 -1
  128. data/app/behaviors/ui/input_group_button_behavior.rb +16 -8
  129. data/app/behaviors/ui/input_group_input_behavior.rb +1 -1
  130. data/app/behaviors/ui/input_group_textarea_behavior.rb +9 -3
  131. data/app/behaviors/ui/input_otp_behavior.rb +50 -36
  132. data/app/behaviors/ui/input_otp_group_behavior.rb +25 -25
  133. data/app/behaviors/ui/input_otp_separator_behavior.rb +26 -26
  134. data/app/behaviors/ui/input_otp_slot_behavior.rb +49 -41
  135. data/app/behaviors/ui/item_actions_behavior.rb +32 -26
  136. data/app/behaviors/ui/item_behavior.rb +100 -87
  137. data/app/behaviors/ui/item_content_behavior.rb +27 -26
  138. data/app/behaviors/ui/item_description_behavior.rb +27 -26
  139. data/app/behaviors/ui/item_footer_behavior.rb +27 -26
  140. data/app/behaviors/ui/item_group_behavior.rb +27 -26
  141. data/app/behaviors/ui/item_header_behavior.rb +27 -26
  142. data/app/behaviors/ui/item_media_behavior.rb +47 -41
  143. data/app/behaviors/ui/item_separator_behavior.rb +27 -26
  144. data/app/behaviors/ui/item_title_behavior.rb +27 -26
  145. data/app/behaviors/ui/kbd_behavior.rb +28 -22
  146. data/app/behaviors/ui/kbd_group_behavior.rb +18 -20
  147. data/app/behaviors/ui/label_behavior.rb +35 -26
  148. data/app/behaviors/ui/large_behavior.rb +25 -17
  149. data/app/behaviors/ui/lead_behavior.rb +25 -17
  150. data/app/behaviors/ui/list_behavior.rb +25 -17
  151. data/app/behaviors/ui/menubar_behavior.rb +73 -35
  152. data/app/behaviors/ui/menubar_checkbox_item_behavior.rb +54 -54
  153. data/app/behaviors/ui/menubar_content_behavior.rb +46 -46
  154. data/app/behaviors/ui/menubar_item_behavior.rb +63 -63
  155. data/app/behaviors/ui/menubar_label_behavior.rb +33 -33
  156. data/app/behaviors/ui/menubar_menu_behavior.rb +37 -33
  157. data/app/behaviors/ui/menubar_radio_group_behavior.rb +28 -28
  158. data/app/behaviors/ui/menubar_radio_item_behavior.rb +59 -59
  159. data/app/behaviors/ui/menubar_separator_behavior.rb +26 -26
  160. data/app/behaviors/ui/menubar_shortcut_behavior.rb +25 -25
  161. data/app/behaviors/ui/menubar_sub_behavior.rb +26 -26
  162. data/app/behaviors/ui/menubar_sub_content_behavior.rb +44 -44
  163. data/app/behaviors/ui/menubar_sub_trigger_behavior.rb +55 -55
  164. data/app/behaviors/ui/menubar_trigger_behavior.rb +40 -42
  165. data/app/behaviors/ui/muted_behavior.rb +25 -17
  166. data/app/behaviors/ui/navigation_menu_behavior.rb +65 -36
  167. data/app/behaviors/ui/navigation_menu_content_behavior.rb +58 -59
  168. data/app/behaviors/ui/navigation_menu_item_behavior.rb +31 -32
  169. data/app/behaviors/ui/navigation_menu_link_behavior.rb +57 -57
  170. data/app/behaviors/ui/navigation_menu_list_behavior.rb +28 -29
  171. data/app/behaviors/ui/navigation_menu_trigger_behavior.rb +50 -51
  172. data/app/behaviors/ui/navigation_menu_viewport_behavior.rb +54 -55
  173. data/app/behaviors/ui/p_behavior.rb +25 -17
  174. data/app/behaviors/ui/pagination_behavior.rb +36 -22
  175. data/app/behaviors/ui/pagination_content_behavior.rb +20 -20
  176. data/app/behaviors/ui/pagination_ellipsis_behavior.rb +21 -21
  177. data/app/behaviors/ui/pagination_item_behavior.rb +11 -11
  178. data/app/behaviors/ui/pagination_link_behavior.rb +51 -51
  179. data/app/behaviors/ui/pagination_next_behavior.rb +16 -16
  180. data/app/behaviors/ui/pagination_previous_behavior.rb +16 -16
  181. data/app/behaviors/ui/popover_behavior.rb +33 -6
  182. data/app/behaviors/ui/popover_content_behavior.rb +1 -1
  183. data/app/behaviors/ui/popover_trigger_behavior.rb +1 -1
  184. data/app/behaviors/ui/progress_behavior.rb +59 -40
  185. data/app/behaviors/ui/radio_button_behavior.rb +51 -36
  186. data/app/behaviors/ui/resizable_handle_behavior.rb +73 -73
  187. data/app/behaviors/ui/resizable_panel_behavior.rb +52 -45
  188. data/app/behaviors/ui/resizable_panel_group_behavior.rb +36 -36
  189. data/app/behaviors/ui/responsive_dialog_behavior.rb +43 -33
  190. data/app/behaviors/ui/scroll_area_behavior.rb +17 -2
  191. data/app/behaviors/ui/scroll_area_corner_behavior.rb +8 -2
  192. data/app/behaviors/ui/scroll_area_scrollbar_behavior.rb +8 -2
  193. data/app/behaviors/ui/scroll_area_thumb_behavior.rb +8 -2
  194. data/app/behaviors/ui/select_behavior.rb +111 -61
  195. data/app/behaviors/ui/select_content_behavior.rb +31 -31
  196. data/app/behaviors/ui/select_group_behavior.rb +24 -24
  197. data/app/behaviors/ui/select_item_behavior.rb +34 -34
  198. data/app/behaviors/ui/select_label_behavior.rb +23 -23
  199. data/app/behaviors/ui/select_scroll_down_button_behavior.rb +38 -38
  200. data/app/behaviors/ui/select_scroll_up_button_behavior.rb +38 -38
  201. data/app/behaviors/ui/select_trigger_behavior.rb +29 -29
  202. data/app/behaviors/ui/separator_behavior.rb +53 -49
  203. data/app/behaviors/ui/shared_as_child_behavior.rb +63 -63
  204. data/app/behaviors/ui/sheet_behavior.rb +63 -42
  205. data/app/behaviors/ui/sheet_content_behavior.rb +80 -80
  206. data/app/behaviors/ui/sheet_footer_behavior.rb +21 -21
  207. data/app/behaviors/ui/sheet_header_behavior.rb +21 -21
  208. data/app/behaviors/ui/sheet_overlay_behavior.rb +64 -64
  209. data/app/behaviors/ui/sidebar_behavior.rb +91 -76
  210. data/app/behaviors/ui/sidebar_content_behavior.rb +28 -28
  211. data/app/behaviors/ui/sidebar_footer_behavior.rb +27 -27
  212. data/app/behaviors/ui/sidebar_group_action_behavior.rb +32 -32
  213. data/app/behaviors/ui/sidebar_group_behavior.rb +27 -27
  214. data/app/behaviors/ui/sidebar_group_content_behavior.rb +27 -27
  215. data/app/behaviors/ui/sidebar_group_label_behavior.rb +31 -31
  216. data/app/behaviors/ui/sidebar_header_behavior.rb +27 -27
  217. data/app/behaviors/ui/sidebar_input_behavior.rb +28 -28
  218. data/app/behaviors/ui/sidebar_inset_behavior.rb +37 -31
  219. data/app/behaviors/ui/sidebar_menu_action_behavior.rb +45 -45
  220. data/app/behaviors/ui/sidebar_menu_badge_behavior.rb +38 -31
  221. data/app/behaviors/ui/sidebar_menu_behavior.rb +38 -27
  222. data/app/behaviors/ui/sidebar_menu_button_behavior.rb +67 -58
  223. data/app/behaviors/ui/sidebar_menu_item_behavior.rb +27 -27
  224. data/app/behaviors/ui/sidebar_menu_skeleton_behavior.rb +34 -27
  225. data/app/behaviors/ui/sidebar_menu_sub_behavior.rb +28 -28
  226. data/app/behaviors/ui/sidebar_menu_sub_button_behavior.rb +64 -55
  227. data/app/behaviors/ui/sidebar_menu_sub_item_behavior.rb +27 -27
  228. data/app/behaviors/ui/sidebar_provider_behavior.rb +53 -47
  229. data/app/behaviors/ui/sidebar_rail_behavior.rb +46 -39
  230. data/app/behaviors/ui/sidebar_separator_behavior.rb +28 -28
  231. data/app/behaviors/ui/sidebar_trigger_behavior.rb +32 -32
  232. data/app/behaviors/ui/slider_behavior.rb +40 -40
  233. data/app/behaviors/ui/slider_range_behavior.rb +15 -15
  234. data/app/behaviors/ui/slider_thumb_behavior.rb +21 -21
  235. data/app/behaviors/ui/slider_track_behavior.rb +19 -19
  236. data/app/behaviors/ui/small_behavior.rb +25 -17
  237. data/app/behaviors/ui/sonner_toaster_behavior.rb +37 -29
  238. data/app/behaviors/ui/spinner_behavior.rb +46 -41
  239. data/app/behaviors/ui/switch_behavior.rb +28 -7
  240. data/app/behaviors/ui/table_behavior.rb +30 -22
  241. data/app/behaviors/ui/table_body_behavior.rb +28 -22
  242. data/app/behaviors/ui/table_caption_behavior.rb +28 -22
  243. data/app/behaviors/ui/table_cell_behavior.rb +28 -22
  244. data/app/behaviors/ui/table_footer_behavior.rb +22 -22
  245. data/app/behaviors/ui/table_head_behavior.rb +28 -22
  246. data/app/behaviors/ui/table_header_behavior.rb +22 -22
  247. data/app/behaviors/ui/table_row_behavior.rb +28 -22
  248. data/app/behaviors/ui/tabs_behavior.rb +53 -28
  249. data/app/behaviors/ui/tabs_content_behavior.rb +33 -33
  250. data/app/behaviors/ui/tabs_list_behavior.rb +17 -17
  251. data/app/behaviors/ui/tabs_trigger_behavior.rb +42 -42
  252. data/app/behaviors/ui/textarea_behavior.rb +36 -28
  253. data/app/behaviors/ui/toggle_behavior.rb +83 -68
  254. data/app/behaviors/ui/toggle_group_behavior.rb +50 -52
  255. data/app/behaviors/ui/toggle_group_item_behavior.rb +73 -71
  256. data/app/behaviors/ui/tooltip_behavior.rb +46 -22
  257. data/app/behaviors/ui/tooltip_content_behavior.rb +53 -53
  258. data/app/behaviors/ui/tooltip_trigger_behavior.rb +55 -55
  259. data/app/components/ui/accordion.rb +32 -32
  260. data/app/components/ui/accordion_content.rb +25 -25
  261. data/app/components/ui/accordion_item.rb +41 -41
  262. data/app/components/ui/accordion_trigger.rb +44 -44
  263. data/app/components/ui/alert.rb +26 -26
  264. data/app/components/ui/alert_description.rb +21 -21
  265. data/app/components/ui/alert_dialog.rb +28 -28
  266. data/app/components/ui/alert_dialog_action.rb +29 -29
  267. data/app/components/ui/alert_dialog_cancel.rb +29 -29
  268. data/app/components/ui/alert_dialog_content.rb +20 -20
  269. data/app/components/ui/alert_dialog_description.rb +20 -20
  270. data/app/components/ui/alert_dialog_footer.rb +23 -23
  271. data/app/components/ui/alert_dialog_header.rb +22 -22
  272. data/app/components/ui/alert_dialog_overlay.rb +25 -25
  273. data/app/components/ui/alert_dialog_title.rb +20 -20
  274. data/app/components/ui/alert_dialog_trigger.rb +22 -22
  275. data/app/components/ui/alert_title.rb +19 -19
  276. data/app/components/ui/aspect_ratio.rb +26 -26
  277. data/app/components/ui/avatar.rb +26 -26
  278. data/app/components/ui/avatar_fallback.rb +28 -28
  279. data/app/components/ui/avatar_image.rb +29 -29
  280. data/app/components/ui/badge.rb +32 -32
  281. data/app/components/ui/base.rb +8 -0
  282. data/app/components/ui/blockquote.rb +1 -0
  283. data/app/components/ui/breadcrumb.rb +26 -26
  284. data/app/components/ui/breadcrumb_ellipsis.rb +47 -47
  285. data/app/components/ui/breadcrumb_item.rb +22 -22
  286. data/app/components/ui/breadcrumb_link.rb +22 -22
  287. data/app/components/ui/breadcrumb_list.rb +22 -22
  288. data/app/components/ui/breadcrumb_page.rb +20 -20
  289. data/app/components/ui/breadcrumb_separator.rb +43 -43
  290. data/app/components/ui/button.rb +44 -44
  291. data/app/components/ui/button_group.rb +44 -44
  292. data/app/components/ui/button_group_separator.rb +28 -28
  293. data/app/components/ui/button_group_text.rb +40 -40
  294. data/app/components/ui/calendar.rb +231 -180
  295. data/app/components/ui/card.rb +10 -10
  296. data/app/components/ui/card_action.rb +10 -10
  297. data/app/components/ui/card_content.rb +10 -10
  298. data/app/components/ui/card_description.rb +10 -10
  299. data/app/components/ui/card_footer.rb +10 -10
  300. data/app/components/ui/card_header.rb +10 -10
  301. data/app/components/ui/card_title.rb +10 -10
  302. data/app/components/ui/carousel.rb +14 -13
  303. data/app/components/ui/carousel_content.rb +12 -11
  304. data/app/components/ui/carousel_item.rb +11 -10
  305. data/app/components/ui/carousel_next.rb +13 -25
  306. data/app/components/ui/carousel_previous.rb +13 -25
  307. data/app/components/ui/checkbox.rb +43 -43
  308. data/app/components/ui/collapsible.rb +17 -17
  309. data/app/components/ui/collapsible_content.rb +11 -11
  310. data/app/components/ui/collapsible_trigger.rb +15 -15
  311. data/app/components/ui/combobox_wrapper.rb +53 -53
  312. data/app/components/ui/command.rb +12 -11
  313. data/app/components/ui/command_dialog.rb +17 -16
  314. data/app/components/ui/command_empty.rb +10 -10
  315. data/app/components/ui/command_group.rb +15 -15
  316. data/app/components/ui/command_input.rb +26 -26
  317. data/app/components/ui/command_item.rb +12 -12
  318. data/app/components/ui/command_list.rb +10 -10
  319. data/app/components/ui/command_separator.rb +10 -10
  320. data/app/components/ui/command_shortcut.rb +10 -10
  321. data/app/components/ui/context_menu.rb +25 -25
  322. data/app/components/ui/context_menu_checkbox_item.rb +42 -42
  323. data/app/components/ui/context_menu_content.rb +22 -22
  324. data/app/components/ui/context_menu_item.rb +34 -34
  325. data/app/components/ui/context_menu_label.rb +22 -22
  326. data/app/components/ui/context_menu_radio_group.rb +23 -23
  327. data/app/components/ui/context_menu_radio_item.rb +42 -42
  328. data/app/components/ui/context_menu_separator.rb +19 -19
  329. data/app/components/ui/context_menu_shortcut.rb +20 -20
  330. data/app/components/ui/context_menu_trigger.rb +22 -22
  331. data/app/components/ui/date_picker.rb +116 -116
  332. data/app/components/ui/date_picker_input.rb +66 -66
  333. data/app/components/ui/date_picker_trigger.rb +63 -63
  334. data/app/components/ui/dialog.rb +14 -14
  335. data/app/components/ui/dialog_close.rb +22 -22
  336. data/app/components/ui/dialog_content.rb +12 -12
  337. data/app/components/ui/dialog_description.rb +17 -17
  338. data/app/components/ui/dialog_footer.rb +10 -10
  339. data/app/components/ui/dialog_header.rb +10 -10
  340. data/app/components/ui/dialog_overlay.rb +13 -13
  341. data/app/components/ui/dialog_title.rb +17 -17
  342. data/app/components/ui/dialog_trigger.rb +32 -32
  343. data/app/components/ui/drawer.rb +34 -34
  344. data/app/components/ui/drawer_close.rb +18 -18
  345. data/app/components/ui/drawer_content.rb +14 -14
  346. data/app/components/ui/drawer_description.rb +11 -11
  347. data/app/components/ui/drawer_footer.rb +11 -11
  348. data/app/components/ui/drawer_handle.rb +10 -10
  349. data/app/components/ui/drawer_header.rb +11 -11
  350. data/app/components/ui/drawer_overlay.rb +12 -12
  351. data/app/components/ui/drawer_title.rb +11 -11
  352. data/app/components/ui/drawer_trigger.rb +29 -29
  353. data/app/components/ui/dropdown_menu.rb +49 -49
  354. data/app/components/ui/dropdown_menu_checkbox_item.rb +45 -45
  355. data/app/components/ui/dropdown_menu_content.rb +24 -24
  356. data/app/components/ui/dropdown_menu_item.rb +34 -34
  357. data/app/components/ui/dropdown_menu_label.rb +22 -22
  358. data/app/components/ui/dropdown_menu_radio_group.rb +23 -23
  359. data/app/components/ui/dropdown_menu_radio_item.rb +47 -47
  360. data/app/components/ui/dropdown_menu_separator.rb +19 -19
  361. data/app/components/ui/dropdown_menu_shortcut.rb +20 -20
  362. data/app/components/ui/dropdown_menu_sub.rb +23 -23
  363. data/app/components/ui/dropdown_menu_sub_content.rb +26 -26
  364. data/app/components/ui/dropdown_menu_sub_trigger.rb +40 -40
  365. data/app/components/ui/dropdown_menu_trigger.rb +37 -36
  366. data/app/components/ui/empty.rb +21 -21
  367. data/app/components/ui/empty_content.rb +18 -18
  368. data/app/components/ui/empty_description.rb +16 -16
  369. data/app/components/ui/empty_header.rb +20 -20
  370. data/app/components/ui/empty_media.rb +24 -24
  371. data/app/components/ui/empty_title.rb +16 -16
  372. data/app/components/ui/field.rb +30 -30
  373. data/app/components/ui/field_content.rb +20 -20
  374. data/app/components/ui/field_description.rb +20 -20
  375. data/app/components/ui/field_error.rb +50 -50
  376. data/app/components/ui/field_group.rb +23 -23
  377. data/app/components/ui/field_label.rb +22 -22
  378. data/app/components/ui/field_legend.rb +25 -25
  379. data/app/components/ui/field_separator.rb +41 -41
  380. data/app/components/ui/field_set.rb +22 -22
  381. data/app/components/ui/field_title.rb +20 -20
  382. data/app/components/ui/h1.rb +1 -0
  383. data/app/components/ui/h2.rb +1 -0
  384. data/app/components/ui/h3.rb +1 -0
  385. data/app/components/ui/h4.rb +1 -0
  386. data/app/components/ui/hover_card.rb +22 -22
  387. data/app/components/ui/hover_card_content.rb +28 -28
  388. data/app/components/ui/hover_card_trigger.rb +40 -40
  389. data/app/components/ui/inline_code.rb +1 -0
  390. data/app/components/ui/input.rb +15 -15
  391. data/app/components/ui/input_group.rb +28 -28
  392. data/app/components/ui/input_group_addon.rb +27 -27
  393. data/app/components/ui/input_group_button.rb +42 -35
  394. data/app/components/ui/input_group_input.rb +39 -39
  395. data/app/components/ui/input_group_text.rb +26 -26
  396. data/app/components/ui/input_group_textarea.rb +39 -39
  397. data/app/components/ui/input_otp.rb +48 -48
  398. data/app/components/ui/input_otp_group.rb +21 -21
  399. data/app/components/ui/input_otp_separator.rb +28 -28
  400. data/app/components/ui/input_otp_slot.rb +28 -28
  401. data/app/components/ui/item.rb +20 -20
  402. data/app/components/ui/item_actions.rb +10 -10
  403. data/app/components/ui/item_content.rb +10 -10
  404. data/app/components/ui/item_description.rb +10 -10
  405. data/app/components/ui/item_footer.rb +10 -10
  406. data/app/components/ui/item_group.rb +10 -10
  407. data/app/components/ui/item_header.rb +10 -10
  408. data/app/components/ui/item_media.rb +11 -11
  409. data/app/components/ui/item_separator.rb +10 -10
  410. data/app/components/ui/item_title.rb +10 -10
  411. data/app/components/ui/kbd.rb +24 -24
  412. data/app/components/ui/kbd_group.rb +25 -25
  413. data/app/components/ui/label.rb +25 -25
  414. data/app/components/ui/large.rb +1 -0
  415. data/app/components/ui/lead.rb +1 -0
  416. data/app/components/ui/list.rb +1 -0
  417. data/app/components/ui/menubar.rb +31 -31
  418. data/app/components/ui/menubar_checkbox_item.rb +45 -45
  419. data/app/components/ui/menubar_content.rb +27 -27
  420. data/app/components/ui/menubar_item.rb +34 -34
  421. data/app/components/ui/menubar_label.rb +24 -24
  422. data/app/components/ui/menubar_menu.rb +24 -24
  423. data/app/components/ui/menubar_radio_group.rb +24 -24
  424. data/app/components/ui/menubar_radio_item.rb +47 -47
  425. data/app/components/ui/menubar_separator.rb +18 -18
  426. data/app/components/ui/menubar_shortcut.rb +22 -22
  427. data/app/components/ui/menubar_sub.rb +25 -25
  428. data/app/components/ui/menubar_sub_content.rb +22 -22
  429. data/app/components/ui/menubar_sub_trigger.rb +41 -41
  430. data/app/components/ui/menubar_trigger.rb +21 -21
  431. data/app/components/ui/muted.rb +1 -0
  432. data/app/components/ui/navigation_menu.rb +43 -43
  433. data/app/components/ui/navigation_menu_content.rb +28 -28
  434. data/app/components/ui/navigation_menu_item.rb +31 -31
  435. data/app/components/ui/navigation_menu_link.rb +60 -60
  436. data/app/components/ui/navigation_menu_list.rb +23 -23
  437. data/app/components/ui/navigation_menu_trigger.rb +44 -44
  438. data/app/components/ui/navigation_menu_viewport.rb +20 -20
  439. data/app/components/ui/p.rb +1 -0
  440. data/app/components/ui/pagination.rb +15 -15
  441. data/app/components/ui/pagination_content.rb +15 -15
  442. data/app/components/ui/pagination_ellipsis.rb +20 -20
  443. data/app/components/ui/pagination_item.rb +13 -13
  444. data/app/components/ui/pagination_link.rb +21 -21
  445. data/app/components/ui/pagination_next.rb +25 -25
  446. data/app/components/ui/pagination_previous.rb +25 -25
  447. data/app/components/ui/popover.rb +67 -42
  448. data/app/components/ui/popover_content.rb +25 -25
  449. data/app/components/ui/popover_trigger.rb +30 -30
  450. data/app/components/ui/progress.rb +32 -32
  451. data/app/components/ui/radio_button.rb +44 -44
  452. data/app/components/ui/resizable_handle.rb +49 -49
  453. data/app/components/ui/resizable_panel.rb +31 -31
  454. data/app/components/ui/resizable_panel_group.rb +37 -37
  455. data/app/components/ui/responsive_dialog.rb +81 -81
  456. data/app/components/ui/scroll_area.rb +54 -54
  457. data/app/components/ui/scroll_area_corner.rb +27 -27
  458. data/app/components/ui/scroll_area_scrollbar.rb +37 -37
  459. data/app/components/ui/scroll_area_thumb.rb +31 -31
  460. data/app/components/ui/scroll_area_viewport.rb +33 -33
  461. data/app/components/ui/select.rb +49 -37
  462. data/app/components/ui/select_content.rb +36 -36
  463. data/app/components/ui/select_group.rb +32 -32
  464. data/app/components/ui/select_item.rb +58 -58
  465. data/app/components/ui/select_label.rb +28 -28
  466. data/app/components/ui/select_scroll_down_button.rb +39 -39
  467. data/app/components/ui/select_scroll_up_button.rb +39 -39
  468. data/app/components/ui/select_trigger.rb +38 -38
  469. data/app/components/ui/separator.rb +35 -35
  470. data/app/components/ui/sheet.rb +14 -14
  471. data/app/components/ui/sheet_close.rb +32 -32
  472. data/app/components/ui/sheet_content.rb +45 -45
  473. data/app/components/ui/sheet_description.rb +17 -17
  474. data/app/components/ui/sheet_footer.rb +10 -10
  475. data/app/components/ui/sheet_header.rb +10 -10
  476. data/app/components/ui/sheet_overlay.rb +13 -13
  477. data/app/components/ui/sheet_title.rb +17 -17
  478. data/app/components/ui/sheet_trigger.rb +21 -21
  479. data/app/components/ui/sidebar.rb +85 -85
  480. data/app/components/ui/sidebar_content.rb +27 -27
  481. data/app/components/ui/sidebar_footer.rb +29 -29
  482. data/app/components/ui/sidebar_group.rb +45 -45
  483. data/app/components/ui/sidebar_group_action.rb +39 -39
  484. data/app/components/ui/sidebar_group_content.rb +35 -35
  485. data/app/components/ui/sidebar_group_label.rb +38 -38
  486. data/app/components/ui/sidebar_header.rb +29 -29
  487. data/app/components/ui/sidebar_input.rb +35 -35
  488. data/app/components/ui/sidebar_inset.rb +35 -35
  489. data/app/components/ui/sidebar_menu.rb +32 -32
  490. data/app/components/ui/sidebar_menu_action.rb +52 -52
  491. data/app/components/ui/sidebar_menu_badge.rb +32 -32
  492. data/app/components/ui/sidebar_menu_button.rb +63 -63
  493. data/app/components/ui/sidebar_menu_item.rb +38 -38
  494. data/app/components/ui/sidebar_menu_skeleton.rb +57 -57
  495. data/app/components/ui/sidebar_menu_sub.rb +43 -43
  496. data/app/components/ui/sidebar_menu_sub_button.rb +40 -40
  497. data/app/components/ui/sidebar_menu_sub_item.rb +27 -27
  498. data/app/components/ui/sidebar_provider.rb +66 -66
  499. data/app/components/ui/sidebar_rail.rb +28 -28
  500. data/app/components/ui/sidebar_separator.rb +25 -25
  501. data/app/components/ui/sidebar_trigger.rb +54 -54
  502. data/app/components/ui/skeleton.rb +37 -37
  503. data/app/components/ui/small.rb +1 -0
  504. data/app/components/ui/sonner_toaster.rb +49 -49
  505. data/app/components/ui/spinner.rb +36 -36
  506. data/app/components/ui/switch.rb +62 -62
  507. data/app/components/ui/table.rb +42 -42
  508. data/app/components/ui/table_body.rb +22 -22
  509. data/app/components/ui/table_caption.rb +11 -11
  510. data/app/components/ui/table_cell.rb +11 -11
  511. data/app/components/ui/table_footer.rb +22 -22
  512. data/app/components/ui/table_head.rb +11 -11
  513. data/app/components/ui/table_header.rb +22 -22
  514. data/app/components/ui/table_row.rb +19 -19
  515. data/app/components/ui/tabs.rb +36 -36
  516. data/app/components/ui/tabs_content.rb +26 -26
  517. data/app/components/ui/tabs_list.rb +23 -23
  518. data/app/components/ui/tabs_trigger.rb +29 -29
  519. data/app/components/ui/textarea.rb +15 -15
  520. data/app/components/ui/toggle.rb +38 -38
  521. data/app/components/ui/toggle_group.rb +58 -52
  522. data/app/components/ui/toggle_group_item.rb +62 -61
  523. data/app/components/ui/tooltip.rb +49 -25
  524. data/app/components/ui/tooltip_content.rb +31 -31
  525. data/app/components/ui/tooltip_trigger.rb +36 -36
  526. data/app/helpers/ui/combobox_behavior.rb +1 -1
  527. data/app/helpers/ui/empty_behavior.rb +6 -6
  528. data/app/helpers/ui/input_group_input_behavior.rb +1 -1
  529. data/app/helpers/ui/input_group_textarea_behavior.rb +1 -1
  530. data/app/helpers/ui/popover_behavior.rb +5 -2
  531. data/app/helpers/ui/popover_content_behavior.rb +1 -1
  532. data/app/helpers/ui/popover_trigger_behavior.rb +1 -1
  533. data/app/helpers/ui/select_behavior.rb +61 -61
  534. data/app/helpers/ui/select_content_behavior.rb +31 -31
  535. data/app/helpers/ui/select_group_behavior.rb +24 -24
  536. data/app/helpers/ui/select_item_behavior.rb +34 -34
  537. data/app/helpers/ui/select_label_behavior.rb +23 -23
  538. data/app/helpers/ui/select_scroll_down_button_behavior.rb +38 -38
  539. data/app/helpers/ui/select_scroll_up_button_behavior.rb +38 -38
  540. data/app/helpers/ui/select_trigger_behavior.rb +29 -29
  541. data/app/helpers/ui/spinner_behavior.rb +1 -1
  542. data/app/javascript/ui/controllers/accordion_controller.js +15 -3
  543. data/app/javascript/ui/controllers/collapsible_controller.js +2 -0
  544. data/app/javascript/ui/controllers/command_controller.js +4 -3
  545. data/app/javascript/ui/controllers/dropdown_controller.js +8 -14
  546. data/app/view_components/ui/accordion_component.rb +31 -31
  547. data/app/view_components/ui/accordion_content_component.rb +24 -24
  548. data/app/view_components/ui/accordion_item_component.rb +37 -37
  549. data/app/view_components/ui/accordion_trigger_component.rb +25 -25
  550. data/app/view_components/ui/alert_component.rb +18 -18
  551. data/app/view_components/ui/alert_description_component.rb +16 -16
  552. data/app/view_components/ui/alert_title_component.rb +16 -16
  553. data/app/view_components/ui/aspect_ratio_component.rb +20 -20
  554. data/app/view_components/ui/avatar_component.rb +16 -16
  555. data/app/view_components/ui/avatar_fallback_component.rb +16 -16
  556. data/app/view_components/ui/avatar_image_component.rb +19 -19
  557. data/app/view_components/ui/badge_component.rb +18 -18
  558. data/app/view_components/ui/blockquote_component.rb +1 -0
  559. data/app/view_components/ui/breadcrumb_component.rb +28 -28
  560. data/app/view_components/ui/breadcrumb_ellipsis_component.rb +41 -41
  561. data/app/view_components/ui/breadcrumb_item_component.rb +24 -24
  562. data/app/view_components/ui/breadcrumb_link_component.rb +24 -24
  563. data/app/view_components/ui/breadcrumb_list_component.rb +24 -24
  564. data/app/view_components/ui/breadcrumb_page_component.rb +22 -22
  565. data/app/view_components/ui/breadcrumb_separator_component.rb +38 -38
  566. data/app/view_components/ui/button_component.rb +39 -39
  567. data/app/view_components/ui/button_group_component.rb +33 -33
  568. data/app/view_components/ui/button_group_separator_component.rb +29 -29
  569. data/app/view_components/ui/button_group_text_component.rb +25 -25
  570. data/app/view_components/ui/calendar_component.rb +241 -182
  571. data/app/view_components/ui/card_action_component.rb +10 -10
  572. data/app/view_components/ui/card_component.rb +10 -10
  573. data/app/view_components/ui/card_content_component.rb +10 -10
  574. data/app/view_components/ui/card_description_component.rb +10 -10
  575. data/app/view_components/ui/card_footer_component.rb +10 -10
  576. data/app/view_components/ui/card_header_component.rb +10 -10
  577. data/app/view_components/ui/card_title_component.rb +10 -10
  578. data/app/view_components/ui/carousel_component.rb +14 -13
  579. data/app/view_components/ui/carousel_content_component.rb +12 -11
  580. data/app/view_components/ui/carousel_item_component.rb +11 -10
  581. data/app/view_components/ui/carousel_next_component.rb +15 -27
  582. data/app/view_components/ui/carousel_previous_component.rb +15 -27
  583. data/app/view_components/ui/checkbox_component.rb +48 -48
  584. data/app/view_components/ui/collapsible_component.rb +17 -17
  585. data/app/view_components/ui/collapsible_content_component.rb +11 -11
  586. data/app/view_components/ui/collapsible_trigger_component.rb +15 -15
  587. data/app/view_components/ui/combobox_wrapper_component.rb +53 -53
  588. data/app/view_components/ui/command_component.rb +12 -11
  589. data/app/view_components/ui/command_dialog_component.rb +17 -16
  590. data/app/view_components/ui/command_empty_component.rb +10 -10
  591. data/app/view_components/ui/command_group_component.rb +16 -16
  592. data/app/view_components/ui/command_input_component.rb +15 -15
  593. data/app/view_components/ui/command_item_component.rb +12 -12
  594. data/app/view_components/ui/command_list_component.rb +10 -10
  595. data/app/view_components/ui/command_separator_component.rb +10 -10
  596. data/app/view_components/ui/command_shortcut_component.rb +10 -10
  597. data/app/view_components/ui/context_menu_checkbox_item_component.rb +36 -37
  598. data/app/view_components/ui/context_menu_component.rb +14 -14
  599. data/app/view_components/ui/context_menu_content_component.rb +14 -14
  600. data/app/view_components/ui/context_menu_item_component.rb +22 -22
  601. data/app/view_components/ui/context_menu_label_component.rb +16 -16
  602. data/app/view_components/ui/context_menu_radio_group_component.rb +13 -13
  603. data/app/view_components/ui/context_menu_radio_item_component.rb +36 -37
  604. data/app/view_components/ui/context_menu_separator_component.rb +11 -11
  605. data/app/view_components/ui/context_menu_shortcut_component.rb +13 -13
  606. data/app/view_components/ui/context_menu_trigger_component.rb +14 -14
  607. data/app/view_components/ui/date_picker_component.rb +125 -125
  608. data/app/view_components/ui/date_picker_input_component.rb +68 -68
  609. data/app/view_components/ui/date_picker_trigger_component.rb +67 -67
  610. data/app/view_components/ui/dialog_close_component.rb +61 -61
  611. data/app/view_components/ui/dialog_component.rb +45 -45
  612. data/app/view_components/ui/dialog_content_component.rb +23 -23
  613. data/app/view_components/ui/dialog_description_component.rb +21 -21
  614. data/app/view_components/ui/dialog_footer_component.rb +17 -17
  615. data/app/view_components/ui/dialog_header_component.rb +18 -18
  616. data/app/view_components/ui/dialog_overlay_component.rb +30 -30
  617. data/app/view_components/ui/dialog_title_component.rb +21 -21
  618. data/app/view_components/ui/dialog_trigger_component.rb +61 -61
  619. data/app/view_components/ui/drawer_close_component.rb +30 -30
  620. data/app/view_components/ui/drawer_component.rb +76 -76
  621. data/app/view_components/ui/drawer_content_component.rb +26 -26
  622. data/app/view_components/ui/drawer_description_component.rb +17 -17
  623. data/app/view_components/ui/drawer_footer_component.rb +20 -20
  624. data/app/view_components/ui/drawer_handle_component.rb +19 -19
  625. data/app/view_components/ui/drawer_header_component.rb +20 -20
  626. data/app/view_components/ui/drawer_overlay_component.rb +22 -22
  627. data/app/view_components/ui/drawer_title_component.rb +17 -17
  628. data/app/view_components/ui/drawer_trigger_component.rb +60 -60
  629. data/app/view_components/ui/dropdown_menu_checkbox_item_component.rb +26 -26
  630. data/app/view_components/ui/dropdown_menu_component.rb +45 -45
  631. data/app/view_components/ui/dropdown_menu_content_component.rb +13 -13
  632. data/app/view_components/ui/dropdown_menu_item_component.rb +16 -16
  633. data/app/view_components/ui/dropdown_menu_label_component.rb +13 -13
  634. data/app/view_components/ui/dropdown_menu_radio_group_component.rb +12 -12
  635. data/app/view_components/ui/dropdown_menu_radio_item_component.rb +27 -27
  636. data/app/view_components/ui/dropdown_menu_separator_component.rb +11 -11
  637. data/app/view_components/ui/dropdown_menu_shortcut_component.rb +12 -12
  638. data/app/view_components/ui/dropdown_menu_sub_component.rb +12 -12
  639. data/app/view_components/ui/dropdown_menu_sub_content_component.rb +14 -14
  640. data/app/view_components/ui/dropdown_menu_sub_trigger_component.rb +22 -22
  641. data/app/view_components/ui/dropdown_menu_trigger_component.rb +32 -48
  642. data/app/view_components/ui/empty_component.rb +12 -12
  643. data/app/view_components/ui/empty_content_component.rb +12 -12
  644. data/app/view_components/ui/empty_description_component.rb +12 -12
  645. data/app/view_components/ui/empty_header_component.rb +12 -12
  646. data/app/view_components/ui/empty_media_component.rb +13 -13
  647. data/app/view_components/ui/empty_title_component.rb +12 -12
  648. data/app/view_components/ui/field_component.rb +36 -36
  649. data/app/view_components/ui/field_content_component.rb +22 -22
  650. data/app/view_components/ui/field_description_component.rb +22 -22
  651. data/app/view_components/ui/field_error_component.rb +55 -55
  652. data/app/view_components/ui/field_group_component.rb +27 -27
  653. data/app/view_components/ui/field_label_component.rb +24 -24
  654. data/app/view_components/ui/field_legend_component.rb +29 -29
  655. data/app/view_components/ui/field_separator_component.rb +43 -43
  656. data/app/view_components/ui/field_set_component.rb +25 -25
  657. data/app/view_components/ui/field_title_component.rb +22 -22
  658. data/app/view_components/ui/h3_component.rb +1 -0
  659. data/app/view_components/ui/h4_component.rb +1 -0
  660. data/app/view_components/ui/hover_card_component.rb +24 -24
  661. data/app/view_components/ui/hover_card_content_component.rb +30 -30
  662. data/app/view_components/ui/hover_card_trigger_component.rb +47 -47
  663. data/app/view_components/ui/inline_code_component.rb +1 -0
  664. data/app/view_components/ui/input_component.rb +17 -17
  665. data/app/view_components/ui/input_group_addon_component.rb +31 -31
  666. data/app/view_components/ui/input_group_button_component.rb +47 -32
  667. data/app/view_components/ui/input_group_component.rb +30 -30
  668. data/app/view_components/ui/input_group_input_component.rb +38 -38
  669. data/app/view_components/ui/input_group_text_component.rb +28 -28
  670. data/app/view_components/ui/input_group_textarea_component.rb +38 -38
  671. data/app/view_components/ui/input_otp_component.rb +52 -52
  672. data/app/view_components/ui/input_otp_group_component.rb +23 -23
  673. data/app/view_components/ui/input_otp_separator_component.rb +29 -29
  674. data/app/view_components/ui/input_otp_slot_component.rb +28 -28
  675. data/app/view_components/ui/item_actions_component.rb +12 -12
  676. data/app/view_components/ui/item_component.rb +23 -23
  677. data/app/view_components/ui/item_content_component.rb +12 -12
  678. data/app/view_components/ui/item_description_component.rb +12 -12
  679. data/app/view_components/ui/item_footer_component.rb +12 -12
  680. data/app/view_components/ui/item_group_component.rb +12 -12
  681. data/app/view_components/ui/item_header_component.rb +12 -12
  682. data/app/view_components/ui/item_media_component.rb +13 -13
  683. data/app/view_components/ui/item_separator_component.rb +12 -12
  684. data/app/view_components/ui/item_title_component.rb +12 -12
  685. data/app/view_components/ui/kbd_component.rb +25 -25
  686. data/app/view_components/ui/kbd_group_component.rb +26 -26
  687. data/app/view_components/ui/label_component.rb +18 -18
  688. data/app/view_components/ui/large_component.rb +1 -0
  689. data/app/view_components/ui/lead_component.rb +1 -0
  690. data/app/view_components/ui/list_component.rb +1 -0
  691. data/app/view_components/ui/menubar_checkbox_item_component.rb +40 -40
  692. data/app/view_components/ui/menubar_component.rb +19 -19
  693. data/app/view_components/ui/menubar_content_component.rb +21 -21
  694. data/app/view_components/ui/menubar_item_component.rb +26 -26
  695. data/app/view_components/ui/menubar_label_component.rb +18 -18
  696. data/app/view_components/ui/menubar_menu_component.rb +20 -20
  697. data/app/view_components/ui/menubar_radio_group_component.rb +21 -21
  698. data/app/view_components/ui/menubar_radio_item_component.rb +41 -41
  699. data/app/view_components/ui/menubar_separator_component.rb +16 -16
  700. data/app/view_components/ui/menubar_shortcut_component.rb +17 -17
  701. data/app/view_components/ui/menubar_sub_component.rb +20 -20
  702. data/app/view_components/ui/menubar_sub_content_component.rb +20 -20
  703. data/app/view_components/ui/menubar_sub_trigger_component.rb +37 -37
  704. data/app/view_components/ui/menubar_trigger_component.rb +18 -18
  705. data/app/view_components/ui/muted_component.rb +1 -0
  706. data/app/view_components/ui/navigation_menu_component.rb +37 -37
  707. data/app/view_components/ui/navigation_menu_content_component.rb +18 -18
  708. data/app/view_components/ui/navigation_menu_item_component.rb +18 -18
  709. data/app/view_components/ui/navigation_menu_link_component.rb +83 -83
  710. data/app/view_components/ui/navigation_menu_list_component.rb +16 -16
  711. data/app/view_components/ui/navigation_menu_trigger_component.rb +38 -38
  712. data/app/view_components/ui/navigation_menu_viewport_component.rb +16 -16
  713. data/app/view_components/ui/p_component.rb +1 -0
  714. data/app/view_components/ui/pagination_component.rb +14 -14
  715. data/app/view_components/ui/pagination_content_component.rb +14 -14
  716. data/app/view_components/ui/pagination_ellipsis_component.rb +20 -20
  717. data/app/view_components/ui/pagination_item_component.rb +12 -12
  718. data/app/view_components/ui/pagination_link_component.rb +21 -21
  719. data/app/view_components/ui/pagination_next_component.rb +24 -24
  720. data/app/view_components/ui/pagination_previous_component.rb +25 -25
  721. data/app/view_components/ui/popover_component.rb +70 -49
  722. data/app/view_components/ui/popover_content_component.rb +36 -36
  723. data/app/view_components/ui/popover_trigger_component.rb +64 -59
  724. data/app/view_components/ui/progress_component.rb +33 -33
  725. data/app/view_components/ui/radio_button_component.rb +49 -49
  726. data/app/view_components/ui/resizable_handle_component.rb +27 -27
  727. data/app/view_components/ui/resizable_panel_component.rb +33 -33
  728. data/app/view_components/ui/resizable_panel_group_component.rb +39 -39
  729. data/app/view_components/ui/responsive_dialog_component.rb +70 -70
  730. data/app/view_components/ui/scroll_area_component.rb +39 -39
  731. data/app/view_components/ui/scroll_area_corner_component.rb +18 -18
  732. data/app/view_components/ui/scroll_area_scrollbar_component.rb +28 -28
  733. data/app/view_components/ui/scroll_area_thumb_component.rb +23 -23
  734. data/app/view_components/ui/scroll_area_viewport_component.rb +25 -25
  735. data/app/view_components/ui/select_component.rb +37 -26
  736. data/app/view_components/ui/select_content_component.rb +35 -36
  737. data/app/view_components/ui/select_group_component.rb +22 -22
  738. data/app/view_components/ui/select_item_component.rb +39 -40
  739. data/app/view_components/ui/select_label_component.rb +18 -18
  740. data/app/view_components/ui/select_scroll_down_button_component.rb +29 -29
  741. data/app/view_components/ui/select_scroll_up_button_component.rb +29 -29
  742. data/app/view_components/ui/select_trigger_component.rb +22 -22
  743. data/app/view_components/ui/separator_component.rb +23 -23
  744. data/app/view_components/ui/sheet_close_component.rb +61 -61
  745. data/app/view_components/ui/sheet_component.rb +45 -45
  746. data/app/view_components/ui/sheet_content_component.rb +43 -43
  747. data/app/view_components/ui/sheet_description_component.rb +20 -20
  748. data/app/view_components/ui/sheet_footer_component.rb +17 -17
  749. data/app/view_components/ui/sheet_header_component.rb +17 -17
  750. data/app/view_components/ui/sheet_overlay_component.rb +30 -30
  751. data/app/view_components/ui/sheet_title_component.rb +20 -20
  752. data/app/view_components/ui/sheet_trigger_component.rb +50 -50
  753. data/app/view_components/ui/skeleton_component.rb +23 -23
  754. data/app/view_components/ui/slider_component.rb +55 -55
  755. data/app/view_components/ui/slider_range_component.rb +19 -19
  756. data/app/view_components/ui/slider_thumb_component.rb +25 -25
  757. data/app/view_components/ui/slider_track_component.rb +22 -22
  758. data/app/view_components/ui/small_component.rb +1 -0
  759. data/app/view_components/ui/sonner_toaster_component.rb +49 -49
  760. data/app/view_components/ui/spinner_component.rb +41 -41
  761. data/app/view_components/ui/switch_component.rb +52 -52
  762. data/app/view_components/ui/table_body_component.rb +14 -14
  763. data/app/view_components/ui/table_caption_component.rb +10 -10
  764. data/app/view_components/ui/table_cell_component.rb +10 -10
  765. data/app/view_components/ui/table_component.rb +20 -20
  766. data/app/view_components/ui/table_footer_component.rb +14 -14
  767. data/app/view_components/ui/table_head_component.rb +10 -10
  768. data/app/view_components/ui/table_header_component.rb +14 -14
  769. data/app/view_components/ui/table_row_component.rb +16 -16
  770. data/app/view_components/ui/tabs_component.rb +33 -33
  771. data/app/view_components/ui/tabs_content_component.rb +28 -28
  772. data/app/view_components/ui/tabs_list_component.rb +24 -24
  773. data/app/view_components/ui/tabs_trigger_component.rb +31 -31
  774. data/app/view_components/ui/textarea_component.rb +14 -14
  775. data/app/view_components/ui/toggle_component.rb +43 -43
  776. data/app/view_components/ui/toggle_group_component.rb +60 -60
  777. data/app/view_components/ui/toggle_group_item_component.rb +62 -62
  778. data/app/view_components/ui/tooltip_component.rb +44 -13
  779. data/app/view_components/ui/tooltip_content_component.rb +23 -23
  780. data/app/view_components/ui/tooltip_trigger_component.rb +38 -18
  781. data/app/views/ui/_avatar.html.erb +8 -4
  782. data/app/views/ui/_button.html.erb +16 -0
  783. data/app/views/ui/_command.html.erb +2 -0
  784. data/app/views/ui/_date_picker.html.erb +4 -4
  785. data/app/views/ui/_popover.html.erb +30 -4
  786. data/app/views/ui/_select.html.erb +13 -2
  787. data/app/views/ui/_skeleton.html.erb +1 -1
  788. data/app/views/ui/_tooltip.html.erb +28 -2
  789. data/app/views/ui/carousel/_next.html.erb +1 -1
  790. data/app/views/ui/carousel/_previous.html.erb +1 -1
  791. data/app/views/ui/dropdown_menu/_trigger.html.erb +3 -1
  792. data/app/views/ui/input_group/_button.html.erb +14 -3
  793. data/app/views/ui/popover/_trigger.html.erb +22 -2
  794. data/app/views/ui/tooltip/_trigger.html.erb +16 -21
  795. data/lib/ui/version.rb +1 -1
  796. metadata +2 -1
@@ -1,28 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # RadioGroup - Phlex implementation
4
- #
5
- # Container for radio items providing semantic grouping.
6
- # Uses DropdownMenuRadioGroupBehavior concern for shared styling logic.
7
- #
8
- # @example Radio group
9
- # render UI::RadioGroup.new do
10
- # render UI::RadioItem.new(value: "top", checked: true) { "Top" }
11
- # render UI::RadioItem.new(value: "bottom") { "Bottom" }
12
- # end
13
- class UI::DropdownMenuRadioGroup < Phlex::HTML
14
- include UI::DropdownMenuRadioGroupBehavior
3
+ # RadioGroup - Phlex implementation
4
+ #
5
+ # Container for radio items providing semantic grouping.
6
+ # Uses DropdownMenuRadioGroupBehavior concern for shared styling logic.
7
+ #
8
+ # @example Radio group
9
+ # render UI::RadioGroup.new do
10
+ # render UI::RadioItem.new(value: "top", checked: true) { "Top" }
11
+ # render UI::RadioItem.new(value: "bottom") { "Bottom" }
12
+ # end
13
+ class UI::DropdownMenuRadioGroup < Phlex::HTML
14
+ include UI::DropdownMenuRadioGroupBehavior
15
15
 
16
- # @param classes [String] Additional CSS classes to merge
17
- # @param attributes [Hash] Additional HTML attributes
18
- def initialize(classes: "", **attributes)
19
- @classes = classes
20
- @attributes = attributes
21
- end
16
+ # @param classes [String] Additional CSS classes to merge
17
+ # @param attributes [Hash] Additional HTML attributes
18
+ def initialize(classes: "", **attributes)
19
+ @classes = classes
20
+ @attributes = attributes
21
+ end
22
22
 
23
- def view_template(&block)
24
- div(**dropdown_menu_radio_group_html_attributes.deep_merge(@attributes)) do
25
- yield if block_given?
26
- end
27
- end
23
+ def view_template(&block)
24
+ div(**dropdown_menu_radio_group_html_attributes.deep_merge(@attributes)) do
25
+ yield if block_given?
28
26
  end
27
+ end
28
+ end
@@ -1,57 +1,57 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # RadioItem - Phlex implementation
4
- #
5
- # Menu item with radio state for exclusive selection within a group.
6
- # Uses DropdownMenuRadioItemBehavior concern for shared styling logic.
7
- #
8
- # @example Radio item
9
- # render UI::RadioItem.new(value: "top", checked: true) { "Top" }
10
- class UI::DropdownMenuRadioItem < Phlex::HTML
11
- include UI::DropdownMenuRadioItemBehavior
3
+ # RadioItem - Phlex implementation
4
+ #
5
+ # Menu item with radio state for exclusive selection within a group.
6
+ # Uses DropdownMenuRadioItemBehavior concern for shared styling logic.
7
+ #
8
+ # @example Radio item
9
+ # render UI::RadioItem.new(value: "top", checked: true) { "Top" }
10
+ class UI::DropdownMenuRadioItem < Phlex::HTML
11
+ include UI::DropdownMenuRadioItemBehavior
12
12
 
13
- # @param value [String] Value of the radio item
14
- # @param checked [Boolean] Whether item is checked
15
- # @param disabled [Boolean] Whether item is disabled
16
- # @param classes [String] Additional CSS classes to merge
17
- # @param attributes [Hash] Additional HTML attributes
18
- def initialize(value:, checked: false, disabled: false, classes: "", **attributes)
19
- @value = value
20
- @checked = checked
21
- @disabled = disabled
22
- @classes = classes
23
- @attributes = attributes
24
- end
13
+ # @param value [String] Value of the radio item
14
+ # @param checked [Boolean] Whether item is checked
15
+ # @param disabled [Boolean] Whether item is disabled
16
+ # @param classes [String] Additional CSS classes to merge
17
+ # @param attributes [Hash] Additional HTML attributes
18
+ def initialize(value:, checked: false, disabled: false, classes: "", **attributes)
19
+ @value = value
20
+ @checked = checked
21
+ @disabled = disabled
22
+ @classes = classes
23
+ @attributes = attributes
24
+ end
25
25
 
26
- def view_template(&block)
27
- div(**dropdown_menu_radio_item_html_attributes.deep_merge(@attributes)) do
28
- render_radio_indicator
29
- yield if block_given?
30
- end
31
- end
26
+ def view_template(&block)
27
+ div(**dropdown_menu_radio_item_html_attributes.deep_merge(@attributes)) do
28
+ render_radio_indicator
29
+ yield if block_given?
30
+ end
31
+ end
32
32
 
33
- private
33
+ private
34
34
 
35
- def render_radio_indicator
36
- span(class: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center") do
37
- if @checked
38
- span(data: { state: "checked" }) do
39
- svg(
40
- xmlns: "http://www.w3.org/2000/svg",
41
- width: "24",
42
- height: "24",
43
- viewBox: "0 0 24 24",
44
- fill: "none",
45
- stroke: "currentColor",
46
- stroke_width: "2",
47
- stroke_linecap: "round",
48
- stroke_linejoin: "round",
49
- class: "lucide lucide-circle size-2 fill-current"
50
- ) do |s|
51
- s.circle(cx: "12", cy: "12", r: "10")
52
- end
53
- end
35
+ def render_radio_indicator
36
+ span(class: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center") do
37
+ if @checked
38
+ span(data: {state: "checked"}) do
39
+ svg(
40
+ xmlns: "http://www.w3.org/2000/svg",
41
+ width: "24",
42
+ height: "24",
43
+ viewBox: "0 0 24 24",
44
+ fill: "none",
45
+ stroke: "currentColor",
46
+ stroke_width: "2",
47
+ stroke_linecap: "round",
48
+ stroke_linejoin: "round",
49
+ class: "lucide lucide-circle size-2 fill-current"
50
+ ) do |s|
51
+ s.circle(cx: "12", cy: "12", r: "10")
54
52
  end
55
53
  end
56
54
  end
57
55
  end
56
+ end
57
+ end
@@ -1,23 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Separator - Phlex implementation
4
- #
5
- # Visual separator between menu items.
6
- # Uses DropdownMenuSeparatorBehavior concern for shared styling logic.
7
- #
8
- # @example Basic separator
9
- # render UI::Separator.new
10
- class UI::DropdownMenuSeparator < Phlex::HTML
11
- include UI::DropdownMenuSeparatorBehavior
3
+ # Separator - Phlex implementation
4
+ #
5
+ # Visual separator between menu items.
6
+ # Uses DropdownMenuSeparatorBehavior concern for shared styling logic.
7
+ #
8
+ # @example Basic separator
9
+ # render UI::Separator.new
10
+ class UI::DropdownMenuSeparator < Phlex::HTML
11
+ include UI::DropdownMenuSeparatorBehavior
12
12
 
13
- # @param classes [String] Additional CSS classes to merge
14
- # @param attributes [Hash] Additional HTML attributes
15
- def initialize(classes: "", **attributes)
16
- @classes = classes
17
- @attributes = attributes
18
- end
13
+ # @param classes [String] Additional CSS classes to merge
14
+ # @param attributes [Hash] Additional HTML attributes
15
+ def initialize(classes: "", **attributes)
16
+ @classes = classes
17
+ @attributes = attributes
18
+ end
19
19
 
20
- def view_template
21
- div(**dropdown_menu_separator_html_attributes.deep_merge(@attributes))
22
- end
23
- end
20
+ def view_template
21
+ div(**dropdown_menu_separator_html_attributes.deep_merge(@attributes))
22
+ end
23
+ end
@@ -1,25 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Shortcut - Phlex implementation
4
- #
5
- # Keyboard shortcut indicator displayed at the end of menu items.
6
- # Uses DropdownMenuShortcutBehavior concern for shared styling logic.
7
- #
8
- # @example Shortcut
9
- # render UI::Shortcut.new { "⌘K" }
10
- class UI::DropdownMenuShortcut < Phlex::HTML
11
- include UI::DropdownMenuShortcutBehavior
3
+ # Shortcut - Phlex implementation
4
+ #
5
+ # Keyboard shortcut indicator displayed at the end of menu items.
6
+ # Uses DropdownMenuShortcutBehavior concern for shared styling logic.
7
+ #
8
+ # @example Shortcut
9
+ # render UI::Shortcut.new { "⌘K" }
10
+ class UI::DropdownMenuShortcut < Phlex::HTML
11
+ include UI::DropdownMenuShortcutBehavior
12
12
 
13
- # @param classes [String] Additional CSS classes to merge
14
- # @param attributes [Hash] Additional HTML attributes
15
- def initialize(classes: "", **attributes)
16
- @classes = classes
17
- @attributes = attributes
18
- end
13
+ # @param classes [String] Additional CSS classes to merge
14
+ # @param attributes [Hash] Additional HTML attributes
15
+ def initialize(classes: "", **attributes)
16
+ @classes = classes
17
+ @attributes = attributes
18
+ end
19
19
 
20
- def view_template(&block)
21
- span(**dropdown_menu_shortcut_html_attributes.deep_merge(@attributes)) do
22
- yield if block_given?
23
- end
24
- end
20
+ def view_template(&block)
21
+ span(**dropdown_menu_shortcut_html_attributes.deep_merge(@attributes)) do
22
+ yield if block_given?
25
23
  end
24
+ end
25
+ end
@@ -1,28 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Sub - Phlex implementation
4
- #
5
- # Container for submenu with relative positioning.
6
- # Uses DropdownMenuSubBehavior concern for shared styling logic.
7
- #
8
- # @example Submenu
9
- # render UI::Sub.new do
10
- # render UI::SubTrigger.new { "More Options" }
11
- # render UI::SubContent.new { "Submenu items" }
12
- # end
13
- class UI::DropdownMenuSub < Phlex::HTML
14
- include UI::DropdownMenuSubBehavior
3
+ # Sub - Phlex implementation
4
+ #
5
+ # Container for submenu with relative positioning.
6
+ # Uses DropdownMenuSubBehavior concern for shared styling logic.
7
+ #
8
+ # @example Submenu
9
+ # render UI::Sub.new do
10
+ # render UI::SubTrigger.new { "More Options" }
11
+ # render UI::SubContent.new { "Submenu items" }
12
+ # end
13
+ class UI::DropdownMenuSub < Phlex::HTML
14
+ include UI::DropdownMenuSubBehavior
15
15
 
16
- # @param classes [String] Additional CSS classes to merge
17
- # @param attributes [Hash] Additional HTML attributes
18
- def initialize(classes: "", **attributes)
19
- @classes = classes
20
- @attributes = attributes
21
- end
16
+ # @param classes [String] Additional CSS classes to merge
17
+ # @param attributes [Hash] Additional HTML attributes
18
+ def initialize(classes: "", **attributes)
19
+ @classes = classes
20
+ @attributes = attributes
21
+ end
22
22
 
23
- def view_template(&block)
24
- div(**dropdown_menu_sub_html_attributes.deep_merge(@attributes)) do
25
- yield if block_given?
26
- end
27
- end
23
+ def view_template(&block)
24
+ div(**dropdown_menu_sub_html_attributes.deep_merge(@attributes)) do
25
+ yield if block_given?
28
26
  end
27
+ end
28
+ end
@@ -1,31 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SubContent - Phlex implementation
4
- #
5
- # Submenu items container positioned to the right of the trigger.
6
- # Uses DropdownMenuSubContentBehavior concern for shared styling logic.
7
- #
8
- # @example Submenu content
9
- # render UI::SubContent.new do
10
- # render UI::Item.new { "Submenu Item" }
11
- # end
12
- class UI::DropdownMenuSubContent < Phlex::HTML
13
- include UI::DropdownMenuSubContentBehavior
3
+ # SubContent - Phlex implementation
4
+ #
5
+ # Submenu items container positioned to the right of the trigger.
6
+ # Uses DropdownMenuSubContentBehavior concern for shared styling logic.
7
+ #
8
+ # @example Submenu content
9
+ # render UI::SubContent.new do
10
+ # render UI::Item.new { "Submenu Item" }
11
+ # end
12
+ class UI::DropdownMenuSubContent < Phlex::HTML
13
+ include UI::DropdownMenuSubContentBehavior
14
14
 
15
- # @param side [String] Side to position submenu ("right", "left", "top", "bottom")
16
- # @param align [String] Alignment relative to trigger ("start", "center", "end")
17
- # @param classes [String] Additional CSS classes to merge
18
- # @param attributes [Hash] Additional HTML attributes
19
- def initialize(side: "right", align: "start", classes: "", **attributes)
20
- @side = side
21
- @align = align
22
- @classes = classes
23
- @attributes = attributes
24
- end
15
+ # @param side [String] Side to position submenu ("right", "left", "top", "bottom")
16
+ # @param align [String] Alignment relative to trigger ("start", "center", "end")
17
+ # @param classes [String] Additional CSS classes to merge
18
+ # @param attributes [Hash] Additional HTML attributes
19
+ def initialize(side: "right", align: "start", classes: "", **attributes)
20
+ @side = side
21
+ @align = align
22
+ @classes = classes
23
+ @attributes = attributes
24
+ end
25
25
 
26
- def view_template(&block)
27
- div(**dropdown_menu_sub_content_html_attributes.deep_merge(@attributes)) do
28
- yield if block_given?
29
- end
30
- end
26
+ def view_template(&block)
27
+ div(**dropdown_menu_sub_content_html_attributes.deep_merge(@attributes)) do
28
+ yield if block_given?
31
29
  end
30
+ end
31
+ end
@@ -1,47 +1,47 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SubTrigger - Phlex implementation
4
- #
5
- # Item that opens a submenu on hover.
6
- # Uses DropdownMenuSubTriggerBehavior concern for shared styling logic.
7
- #
8
- # @example Submenu trigger
9
- # render UI::SubTrigger.new { "More Options" }
10
- class UI::DropdownMenuSubTrigger < Phlex::HTML
11
- include UI::DropdownMenuSubTriggerBehavior
3
+ # SubTrigger - Phlex implementation
4
+ #
5
+ # Item that opens a submenu on hover.
6
+ # Uses DropdownMenuSubTriggerBehavior concern for shared styling logic.
7
+ #
8
+ # @example Submenu trigger
9
+ # render UI::SubTrigger.new { "More Options" }
10
+ class UI::DropdownMenuSubTrigger < Phlex::HTML
11
+ include UI::DropdownMenuSubTriggerBehavior
12
12
 
13
- # @param inset [Boolean] Whether to add left padding for alignment
14
- # @param classes [String] Additional CSS classes to merge
15
- # @param attributes [Hash] Additional HTML attributes
16
- def initialize(inset: false, classes: "", **attributes)
17
- @inset = inset
18
- @classes = classes
19
- @attributes = attributes
20
- end
13
+ # @param inset [Boolean] Whether to add left padding for alignment
14
+ # @param classes [String] Additional CSS classes to merge
15
+ # @param attributes [Hash] Additional HTML attributes
16
+ def initialize(inset: false, classes: "", **attributes)
17
+ @inset = inset
18
+ @classes = classes
19
+ @attributes = attributes
20
+ end
21
21
 
22
- def view_template(&block)
23
- div(**dropdown_menu_sub_trigger_html_attributes.deep_merge(@attributes)) do
24
- yield if block_given?
25
- render_chevron_icon
26
- end
27
- end
22
+ def view_template(&block)
23
+ div(**dropdown_menu_sub_trigger_html_attributes.deep_merge(@attributes)) do
24
+ yield if block_given?
25
+ render_chevron_icon
26
+ end
27
+ end
28
28
 
29
- private
29
+ private
30
30
 
31
- def render_chevron_icon
32
- svg(
33
- xmlns: "http://www.w3.org/2000/svg",
34
- width: "24",
35
- height: "24",
36
- viewBox: "0 0 24 24",
37
- fill: "none",
38
- stroke: "currentColor",
39
- stroke_width: "2",
40
- stroke_linecap: "round",
41
- stroke_linejoin: "round",
42
- class: "ml-auto lucide lucide-chevron-right"
43
- ) do |s|
44
- s.path(d: "m9 18 6-6-6-6")
45
- end
46
- end
31
+ def render_chevron_icon
32
+ svg(
33
+ xmlns: "http://www.w3.org/2000/svg",
34
+ width: "24",
35
+ height: "24",
36
+ viewBox: "0 0 24 24",
37
+ fill: "none",
38
+ stroke: "currentColor",
39
+ stroke_width: "2",
40
+ stroke_linecap: "round",
41
+ stroke_linejoin: "round",
42
+ class: "ml-auto lucide lucide-chevron-right"
43
+ ) do |s|
44
+ s.path(d: "m9 18 6-6-6-6")
47
45
  end
46
+ end
47
+ end
@@ -1,43 +1,44 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Trigger - Phlex implementation
4
- #
5
- # Wrapper that adds toggle action to child element.
6
- # Uses DropdownMenuTriggerBehavior concern for shared styling logic.
7
- #
8
- # Supports asChild pattern for composition without wrapper elements.
9
- #
10
- # @example Basic usage
11
- # render UI::Trigger.new { button { "Open Menu" } }
12
- #
13
- # @example With asChild - pass attributes to custom button
14
- # render UI::Trigger.new(as_child: true) do |trigger_attrs|
15
- # render UI::Button.new(**trigger_attrs) { "Menu" }
16
- # end
17
- class UI::DropdownMenuTrigger < Phlex::HTML
18
- include UI::DropdownMenuTriggerBehavior
19
- include UI::SharedAsChildBehavior
3
+ # Trigger - Phlex implementation
4
+ #
5
+ # Wrapper that adds toggle action to child element.
6
+ # Uses DropdownMenuTriggerBehavior concern for shared styling logic.
7
+ #
8
+ # Supports asChild pattern for composition without wrapper elements.
9
+ #
10
+ # @example Basic usage
11
+ # render UI::Trigger.new { button { "Open Menu" } }
12
+ #
13
+ # @example With asChild - pass attributes to custom button
14
+ # render UI::Trigger.new(as_child: true) do |trigger_attrs|
15
+ # render UI::Button.new(**trigger_attrs) { "Menu" }
16
+ # end
17
+ class UI::DropdownMenuTrigger < Phlex::HTML
18
+ include UI::DropdownMenuTriggerBehavior
19
+ include UI::SharedAsChildBehavior
20
20
 
21
- # @param as_child [Boolean] When true, yields attributes to block instead of rendering wrapper
22
- # @param classes [String] Additional CSS classes to merge
23
- # @param attributes [Hash] Additional HTML attributes
24
- def initialize(as_child: false, classes: "", **attributes)
25
- @as_child = as_child
26
- @classes = classes
27
- @attributes = attributes
28
- end
21
+ # @param as_child [Boolean] When true, yields attributes to block instead of rendering wrapper
22
+ # @param classes [String] Additional CSS classes to merge
23
+ # @param attributes [Hash] Additional HTML attributes
24
+ def initialize(as_child: false, classes: "", **attributes)
25
+ @as_child = as_child
26
+ @classes = classes
27
+ @attributes = attributes
28
+ end
29
29
 
30
- def view_template(&block)
31
- trigger_attrs = dropdown_menu_trigger_html_attributes.deep_merge(@attributes)
30
+ def view_template(&block)
31
+ trigger_attrs = dropdown_menu_trigger_html_attributes.deep_merge(@attributes)
32
32
 
33
- if @as_child
34
- # Yield attributes to block - child receives trigger behavior
35
- yield(trigger_attrs) if block_given?
36
- else
37
- # Default: render wrapper div with trigger behavior
38
- div(**trigger_attrs) do
39
- yield if block_given?
40
- end
41
- end
33
+ if @as_child
34
+ # When as_child is true, only pass functional attributes (data, aria, tabindex, role)
35
+ # The child component handles its own styling (following shadcn pattern)
36
+ yield(trigger_attrs.except(:class)) if block_given?
37
+ else
38
+ # Default: render wrapper div with trigger behavior
39
+ div(**trigger_attrs) do
40
+ yield if block_given?
42
41
  end
43
42
  end
43
+ end
44
+ end
@@ -1,25 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Empty - Phlex implementation
4
- #
5
- # Displays empty states in applications with customizable media, titles, descriptions, and actions.
6
- #
7
- # @example Basic usage
8
- # render UI::Empty.new do
9
- # render UI::EmptyHeader.new do
10
- # render UI::EmptyTitle.new { "No results found" }
11
- # render UI::EmptyDescription.new { "Try adjusting your search criteria." }
12
- # end
13
- # end
14
- class UI::Empty < Phlex::HTML
15
- include UI::EmptyBehavior
3
+ # Empty - Phlex implementation
4
+ #
5
+ # Displays empty states in applications with customizable media, titles, descriptions, and actions.
6
+ #
7
+ # @example Basic usage
8
+ # render UI::Empty.new do
9
+ # render UI::EmptyHeader.new do
10
+ # render UI::EmptyTitle.new { "No results found" }
11
+ # render UI::EmptyDescription.new { "Try adjusting your search criteria." }
12
+ # end
13
+ # end
14
+ class UI::Empty < Phlex::HTML
15
+ include UI::EmptyBehavior
16
16
 
17
- def initialize(classes: "", **attributes)
18
- @classes = classes
19
- @attributes = attributes
20
- end
17
+ def initialize(classes: "", **attributes)
18
+ @classes = classes
19
+ @attributes = attributes
20
+ end
21
21
 
22
- def view_template(&block)
23
- div(**empty_html_attributes.merge(@attributes), &block)
24
- end
25
- end
22
+ def view_template(&block)
23
+ div(**empty_html_attributes.merge(@attributes), &block)
24
+ end
25
+ end
@@ -1,22 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # EmptyContent - Phlex implementation
4
- #
5
- # Displays the content of the empty state such as a button, input or a link.
6
- #
7
- # @example
8
- # render UI::EmptyContent.new do
9
- # render UI::Button.new { "Create Item" }
10
- # end
11
- class UI::EmptyContent < Phlex::HTML
12
- include UI::EmptyContentBehavior
3
+ # EmptyContent - Phlex implementation
4
+ #
5
+ # Displays the content of the empty state such as a button, input or a link.
6
+ #
7
+ # @example
8
+ # render UI::EmptyContent.new do
9
+ # render UI::Button.new { "Create Item" }
10
+ # end
11
+ class UI::EmptyContent < Phlex::HTML
12
+ include UI::EmptyContentBehavior
13
13
 
14
- def initialize(classes: "", **attributes)
15
- @classes = classes
16
- @attributes = attributes
17
- end
14
+ def initialize(classes: "", **attributes)
15
+ @classes = classes
16
+ @attributes = attributes
17
+ end
18
18
 
19
- def view_template(&block)
20
- div(**empty_content_html_attributes.merge(@attributes), &block)
21
- end
22
- end
19
+ def view_template(&block)
20
+ div(**empty_content_html_attributes.merge(@attributes), &block)
21
+ end
22
+ end
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # EmptyDescription - Phlex implementation
4
- #
5
- # Displays the description of the empty state.
6
- #
7
- # @example
8
- # render UI::EmptyDescription.new { "Try adjusting your search criteria." }
9
- class UI::EmptyDescription < Phlex::HTML
10
- include UI::EmptyDescriptionBehavior
3
+ # EmptyDescription - Phlex implementation
4
+ #
5
+ # Displays the description of the empty state.
6
+ #
7
+ # @example
8
+ # render UI::EmptyDescription.new { "Try adjusting your search criteria." }
9
+ class UI::EmptyDescription < Phlex::HTML
10
+ include UI::EmptyDescriptionBehavior
11
11
 
12
- def initialize(classes: "", **attributes)
13
- @classes = classes
14
- @attributes = attributes
15
- end
12
+ def initialize(classes: "", **attributes)
13
+ @classes = classes
14
+ @attributes = attributes
15
+ end
16
16
 
17
- def view_template(&block)
18
- p(**empty_description_html_attributes.merge(@attributes), &block)
19
- end
20
- end
17
+ def view_template(&block)
18
+ p(**empty_description_html_attributes.merge(@attributes), &block)
19
+ end
20
+ end