fernandes-ui 0.1.1 → 0.1.2

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 (780) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -0
  3. data/app/assets/javascripts/ui.esm.js +12 -3
  4. data/app/assets/javascripts/ui.js +12 -3
  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 +52 -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_button_behavior.rb +9 -2
  128. data/app/behaviors/ui/input_group_input_behavior.rb +1 -1
  129. data/app/behaviors/ui/input_group_textarea_behavior.rb +9 -3
  130. data/app/behaviors/ui/input_otp_behavior.rb +50 -36
  131. data/app/behaviors/ui/input_otp_group_behavior.rb +25 -25
  132. data/app/behaviors/ui/input_otp_separator_behavior.rb +26 -26
  133. data/app/behaviors/ui/input_otp_slot_behavior.rb +49 -41
  134. data/app/behaviors/ui/item_actions_behavior.rb +32 -26
  135. data/app/behaviors/ui/item_behavior.rb +100 -87
  136. data/app/behaviors/ui/item_content_behavior.rb +27 -26
  137. data/app/behaviors/ui/item_description_behavior.rb +27 -26
  138. data/app/behaviors/ui/item_footer_behavior.rb +27 -26
  139. data/app/behaviors/ui/item_group_behavior.rb +27 -26
  140. data/app/behaviors/ui/item_header_behavior.rb +27 -26
  141. data/app/behaviors/ui/item_media_behavior.rb +47 -41
  142. data/app/behaviors/ui/item_separator_behavior.rb +27 -26
  143. data/app/behaviors/ui/item_title_behavior.rb +27 -26
  144. data/app/behaviors/ui/kbd_behavior.rb +28 -22
  145. data/app/behaviors/ui/kbd_group_behavior.rb +18 -20
  146. data/app/behaviors/ui/label_behavior.rb +35 -26
  147. data/app/behaviors/ui/large_behavior.rb +25 -17
  148. data/app/behaviors/ui/lead_behavior.rb +25 -17
  149. data/app/behaviors/ui/list_behavior.rb +25 -17
  150. data/app/behaviors/ui/menubar_behavior.rb +73 -35
  151. data/app/behaviors/ui/menubar_checkbox_item_behavior.rb +54 -54
  152. data/app/behaviors/ui/menubar_content_behavior.rb +46 -46
  153. data/app/behaviors/ui/menubar_item_behavior.rb +63 -63
  154. data/app/behaviors/ui/menubar_label_behavior.rb +33 -33
  155. data/app/behaviors/ui/menubar_menu_behavior.rb +37 -33
  156. data/app/behaviors/ui/menubar_radio_group_behavior.rb +28 -28
  157. data/app/behaviors/ui/menubar_radio_item_behavior.rb +59 -59
  158. data/app/behaviors/ui/menubar_separator_behavior.rb +26 -26
  159. data/app/behaviors/ui/menubar_shortcut_behavior.rb +25 -25
  160. data/app/behaviors/ui/menubar_sub_behavior.rb +26 -26
  161. data/app/behaviors/ui/menubar_sub_content_behavior.rb +44 -44
  162. data/app/behaviors/ui/menubar_sub_trigger_behavior.rb +55 -55
  163. data/app/behaviors/ui/menubar_trigger_behavior.rb +40 -42
  164. data/app/behaviors/ui/muted_behavior.rb +25 -17
  165. data/app/behaviors/ui/navigation_menu_behavior.rb +65 -36
  166. data/app/behaviors/ui/navigation_menu_content_behavior.rb +58 -59
  167. data/app/behaviors/ui/navigation_menu_item_behavior.rb +31 -32
  168. data/app/behaviors/ui/navigation_menu_link_behavior.rb +57 -57
  169. data/app/behaviors/ui/navigation_menu_list_behavior.rb +28 -29
  170. data/app/behaviors/ui/navigation_menu_trigger_behavior.rb +50 -51
  171. data/app/behaviors/ui/navigation_menu_viewport_behavior.rb +54 -55
  172. data/app/behaviors/ui/p_behavior.rb +25 -17
  173. data/app/behaviors/ui/pagination_behavior.rb +36 -22
  174. data/app/behaviors/ui/pagination_content_behavior.rb +20 -20
  175. data/app/behaviors/ui/pagination_ellipsis_behavior.rb +21 -21
  176. data/app/behaviors/ui/pagination_item_behavior.rb +11 -11
  177. data/app/behaviors/ui/pagination_link_behavior.rb +51 -51
  178. data/app/behaviors/ui/pagination_next_behavior.rb +16 -16
  179. data/app/behaviors/ui/pagination_previous_behavior.rb +16 -16
  180. data/app/behaviors/ui/popover_behavior.rb +22 -3
  181. data/app/behaviors/ui/popover_content_behavior.rb +1 -1
  182. data/app/behaviors/ui/popover_trigger_behavior.rb +1 -1
  183. data/app/behaviors/ui/progress_behavior.rb +59 -40
  184. data/app/behaviors/ui/radio_button_behavior.rb +51 -36
  185. data/app/behaviors/ui/resizable_handle_behavior.rb +73 -73
  186. data/app/behaviors/ui/resizable_panel_behavior.rb +52 -45
  187. data/app/behaviors/ui/resizable_panel_group_behavior.rb +36 -36
  188. data/app/behaviors/ui/responsive_dialog_behavior.rb +43 -33
  189. data/app/behaviors/ui/scroll_area_behavior.rb +17 -2
  190. data/app/behaviors/ui/scroll_area_corner_behavior.rb +8 -2
  191. data/app/behaviors/ui/scroll_area_scrollbar_behavior.rb +8 -2
  192. data/app/behaviors/ui/scroll_area_thumb_behavior.rb +8 -2
  193. data/app/behaviors/ui/select_behavior.rb +111 -61
  194. data/app/behaviors/ui/select_content_behavior.rb +31 -31
  195. data/app/behaviors/ui/select_group_behavior.rb +24 -24
  196. data/app/behaviors/ui/select_item_behavior.rb +34 -34
  197. data/app/behaviors/ui/select_label_behavior.rb +23 -23
  198. data/app/behaviors/ui/select_scroll_down_button_behavior.rb +38 -38
  199. data/app/behaviors/ui/select_scroll_up_button_behavior.rb +38 -38
  200. data/app/behaviors/ui/select_trigger_behavior.rb +29 -29
  201. data/app/behaviors/ui/separator_behavior.rb +53 -49
  202. data/app/behaviors/ui/shared_as_child_behavior.rb +63 -63
  203. data/app/behaviors/ui/sheet_behavior.rb +63 -42
  204. data/app/behaviors/ui/sheet_content_behavior.rb +80 -80
  205. data/app/behaviors/ui/sheet_footer_behavior.rb +21 -21
  206. data/app/behaviors/ui/sheet_header_behavior.rb +21 -21
  207. data/app/behaviors/ui/sheet_overlay_behavior.rb +64 -64
  208. data/app/behaviors/ui/sidebar_behavior.rb +91 -76
  209. data/app/behaviors/ui/sidebar_content_behavior.rb +28 -28
  210. data/app/behaviors/ui/sidebar_footer_behavior.rb +27 -27
  211. data/app/behaviors/ui/sidebar_group_action_behavior.rb +32 -32
  212. data/app/behaviors/ui/sidebar_group_behavior.rb +27 -27
  213. data/app/behaviors/ui/sidebar_group_content_behavior.rb +27 -27
  214. data/app/behaviors/ui/sidebar_group_label_behavior.rb +31 -31
  215. data/app/behaviors/ui/sidebar_header_behavior.rb +27 -27
  216. data/app/behaviors/ui/sidebar_input_behavior.rb +28 -28
  217. data/app/behaviors/ui/sidebar_inset_behavior.rb +37 -31
  218. data/app/behaviors/ui/sidebar_menu_action_behavior.rb +45 -45
  219. data/app/behaviors/ui/sidebar_menu_badge_behavior.rb +38 -31
  220. data/app/behaviors/ui/sidebar_menu_behavior.rb +38 -27
  221. data/app/behaviors/ui/sidebar_menu_button_behavior.rb +67 -58
  222. data/app/behaviors/ui/sidebar_menu_item_behavior.rb +27 -27
  223. data/app/behaviors/ui/sidebar_menu_skeleton_behavior.rb +34 -27
  224. data/app/behaviors/ui/sidebar_menu_sub_behavior.rb +28 -28
  225. data/app/behaviors/ui/sidebar_menu_sub_button_behavior.rb +64 -55
  226. data/app/behaviors/ui/sidebar_menu_sub_item_behavior.rb +27 -27
  227. data/app/behaviors/ui/sidebar_provider_behavior.rb +53 -47
  228. data/app/behaviors/ui/sidebar_rail_behavior.rb +46 -39
  229. data/app/behaviors/ui/sidebar_separator_behavior.rb +28 -28
  230. data/app/behaviors/ui/sidebar_trigger_behavior.rb +32 -32
  231. data/app/behaviors/ui/slider_behavior.rb +40 -40
  232. data/app/behaviors/ui/slider_range_behavior.rb +15 -15
  233. data/app/behaviors/ui/slider_thumb_behavior.rb +21 -21
  234. data/app/behaviors/ui/slider_track_behavior.rb +19 -19
  235. data/app/behaviors/ui/small_behavior.rb +25 -17
  236. data/app/behaviors/ui/sonner_toaster_behavior.rb +37 -29
  237. data/app/behaviors/ui/spinner_behavior.rb +46 -41
  238. data/app/behaviors/ui/switch_behavior.rb +77 -56
  239. data/app/behaviors/ui/table_behavior.rb +30 -22
  240. data/app/behaviors/ui/table_body_behavior.rb +28 -22
  241. data/app/behaviors/ui/table_caption_behavior.rb +28 -22
  242. data/app/behaviors/ui/table_cell_behavior.rb +28 -22
  243. data/app/behaviors/ui/table_footer_behavior.rb +22 -22
  244. data/app/behaviors/ui/table_head_behavior.rb +28 -22
  245. data/app/behaviors/ui/table_header_behavior.rb +22 -22
  246. data/app/behaviors/ui/table_row_behavior.rb +28 -22
  247. data/app/behaviors/ui/tabs_behavior.rb +53 -28
  248. data/app/behaviors/ui/tabs_content_behavior.rb +33 -33
  249. data/app/behaviors/ui/tabs_list_behavior.rb +17 -17
  250. data/app/behaviors/ui/tabs_trigger_behavior.rb +42 -42
  251. data/app/behaviors/ui/textarea_behavior.rb +36 -28
  252. data/app/behaviors/ui/toggle_behavior.rb +83 -68
  253. data/app/behaviors/ui/toggle_group_behavior.rb +50 -52
  254. data/app/behaviors/ui/toggle_group_item_behavior.rb +69 -71
  255. data/app/behaviors/ui/tooltip_behavior.rb +36 -22
  256. data/app/behaviors/ui/tooltip_content_behavior.rb +53 -53
  257. data/app/behaviors/ui/tooltip_trigger_behavior.rb +55 -55
  258. data/app/components/ui/accordion.rb +32 -32
  259. data/app/components/ui/accordion_content.rb +25 -25
  260. data/app/components/ui/accordion_item.rb +41 -41
  261. data/app/components/ui/accordion_trigger.rb +44 -44
  262. data/app/components/ui/alert.rb +26 -26
  263. data/app/components/ui/alert_description.rb +21 -21
  264. data/app/components/ui/alert_dialog.rb +28 -28
  265. data/app/components/ui/alert_dialog_action.rb +29 -29
  266. data/app/components/ui/alert_dialog_cancel.rb +29 -29
  267. data/app/components/ui/alert_dialog_content.rb +20 -20
  268. data/app/components/ui/alert_dialog_description.rb +20 -20
  269. data/app/components/ui/alert_dialog_footer.rb +23 -23
  270. data/app/components/ui/alert_dialog_header.rb +22 -22
  271. data/app/components/ui/alert_dialog_overlay.rb +25 -25
  272. data/app/components/ui/alert_dialog_title.rb +20 -20
  273. data/app/components/ui/alert_dialog_trigger.rb +22 -22
  274. data/app/components/ui/alert_title.rb +19 -19
  275. data/app/components/ui/aspect_ratio.rb +26 -26
  276. data/app/components/ui/avatar.rb +26 -26
  277. data/app/components/ui/avatar_fallback.rb +28 -28
  278. data/app/components/ui/avatar_image.rb +29 -29
  279. data/app/components/ui/badge.rb +32 -32
  280. data/app/components/ui/blockquote.rb +1 -0
  281. data/app/components/ui/breadcrumb.rb +26 -26
  282. data/app/components/ui/breadcrumb_ellipsis.rb +47 -47
  283. data/app/components/ui/breadcrumb_item.rb +22 -22
  284. data/app/components/ui/breadcrumb_link.rb +22 -22
  285. data/app/components/ui/breadcrumb_list.rb +22 -22
  286. data/app/components/ui/breadcrumb_page.rb +20 -20
  287. data/app/components/ui/breadcrumb_separator.rb +43 -43
  288. data/app/components/ui/button.rb +44 -44
  289. data/app/components/ui/button_group.rb +44 -44
  290. data/app/components/ui/button_group_separator.rb +28 -28
  291. data/app/components/ui/button_group_text.rb +40 -40
  292. data/app/components/ui/calendar.rb +188 -188
  293. data/app/components/ui/card.rb +10 -10
  294. data/app/components/ui/card_action.rb +10 -10
  295. data/app/components/ui/card_content.rb +10 -10
  296. data/app/components/ui/card_description.rb +10 -10
  297. data/app/components/ui/card_footer.rb +10 -10
  298. data/app/components/ui/card_header.rb +10 -10
  299. data/app/components/ui/card_title.rb +10 -10
  300. data/app/components/ui/carousel.rb +14 -13
  301. data/app/components/ui/carousel_content.rb +12 -11
  302. data/app/components/ui/carousel_item.rb +11 -10
  303. data/app/components/ui/carousel_next.rb +13 -25
  304. data/app/components/ui/carousel_previous.rb +13 -25
  305. data/app/components/ui/checkbox.rb +43 -43
  306. data/app/components/ui/collapsible.rb +17 -17
  307. data/app/components/ui/collapsible_content.rb +11 -11
  308. data/app/components/ui/collapsible_trigger.rb +15 -15
  309. data/app/components/ui/combobox_wrapper.rb +53 -53
  310. data/app/components/ui/command.rb +12 -11
  311. data/app/components/ui/command_dialog.rb +17 -16
  312. data/app/components/ui/command_empty.rb +10 -10
  313. data/app/components/ui/command_group.rb +15 -15
  314. data/app/components/ui/command_input.rb +26 -26
  315. data/app/components/ui/command_item.rb +12 -12
  316. data/app/components/ui/command_list.rb +10 -10
  317. data/app/components/ui/command_separator.rb +10 -10
  318. data/app/components/ui/command_shortcut.rb +10 -10
  319. data/app/components/ui/context_menu.rb +25 -25
  320. data/app/components/ui/context_menu_checkbox_item.rb +42 -42
  321. data/app/components/ui/context_menu_content.rb +22 -22
  322. data/app/components/ui/context_menu_item.rb +34 -34
  323. data/app/components/ui/context_menu_label.rb +22 -22
  324. data/app/components/ui/context_menu_radio_group.rb +23 -23
  325. data/app/components/ui/context_menu_radio_item.rb +42 -42
  326. data/app/components/ui/context_menu_separator.rb +19 -19
  327. data/app/components/ui/context_menu_shortcut.rb +20 -20
  328. data/app/components/ui/context_menu_trigger.rb +22 -22
  329. data/app/components/ui/date_picker.rb +116 -116
  330. data/app/components/ui/date_picker_input.rb +66 -66
  331. data/app/components/ui/date_picker_trigger.rb +63 -63
  332. data/app/components/ui/dialog.rb +14 -14
  333. data/app/components/ui/dialog_close.rb +22 -22
  334. data/app/components/ui/dialog_content.rb +12 -12
  335. data/app/components/ui/dialog_description.rb +17 -17
  336. data/app/components/ui/dialog_footer.rb +10 -10
  337. data/app/components/ui/dialog_header.rb +10 -10
  338. data/app/components/ui/dialog_overlay.rb +13 -13
  339. data/app/components/ui/dialog_title.rb +17 -17
  340. data/app/components/ui/dialog_trigger.rb +32 -32
  341. data/app/components/ui/drawer.rb +34 -34
  342. data/app/components/ui/drawer_close.rb +18 -18
  343. data/app/components/ui/drawer_content.rb +14 -14
  344. data/app/components/ui/drawer_description.rb +11 -11
  345. data/app/components/ui/drawer_footer.rb +11 -11
  346. data/app/components/ui/drawer_handle.rb +10 -10
  347. data/app/components/ui/drawer_header.rb +11 -11
  348. data/app/components/ui/drawer_overlay.rb +12 -12
  349. data/app/components/ui/drawer_title.rb +11 -11
  350. data/app/components/ui/drawer_trigger.rb +29 -29
  351. data/app/components/ui/dropdown_menu.rb +49 -49
  352. data/app/components/ui/dropdown_menu_checkbox_item.rb +45 -45
  353. data/app/components/ui/dropdown_menu_content.rb +24 -24
  354. data/app/components/ui/dropdown_menu_item.rb +34 -34
  355. data/app/components/ui/dropdown_menu_label.rb +22 -22
  356. data/app/components/ui/dropdown_menu_radio_group.rb +23 -23
  357. data/app/components/ui/dropdown_menu_radio_item.rb +47 -47
  358. data/app/components/ui/dropdown_menu_separator.rb +19 -19
  359. data/app/components/ui/dropdown_menu_shortcut.rb +20 -20
  360. data/app/components/ui/dropdown_menu_sub.rb +23 -23
  361. data/app/components/ui/dropdown_menu_sub_content.rb +26 -26
  362. data/app/components/ui/dropdown_menu_sub_trigger.rb +40 -40
  363. data/app/components/ui/dropdown_menu_trigger.rb +36 -36
  364. data/app/components/ui/empty.rb +21 -21
  365. data/app/components/ui/empty_content.rb +18 -18
  366. data/app/components/ui/empty_description.rb +16 -16
  367. data/app/components/ui/empty_header.rb +20 -20
  368. data/app/components/ui/empty_media.rb +24 -24
  369. data/app/components/ui/empty_title.rb +16 -16
  370. data/app/components/ui/field.rb +30 -30
  371. data/app/components/ui/field_content.rb +20 -20
  372. data/app/components/ui/field_description.rb +20 -20
  373. data/app/components/ui/field_error.rb +50 -50
  374. data/app/components/ui/field_group.rb +23 -23
  375. data/app/components/ui/field_label.rb +22 -22
  376. data/app/components/ui/field_legend.rb +25 -25
  377. data/app/components/ui/field_separator.rb +41 -41
  378. data/app/components/ui/field_set.rb +22 -22
  379. data/app/components/ui/field_title.rb +20 -20
  380. data/app/components/ui/h1.rb +1 -0
  381. data/app/components/ui/h2.rb +1 -0
  382. data/app/components/ui/h3.rb +1 -0
  383. data/app/components/ui/h4.rb +1 -0
  384. data/app/components/ui/hover_card.rb +22 -22
  385. data/app/components/ui/hover_card_content.rb +28 -28
  386. data/app/components/ui/hover_card_trigger.rb +40 -40
  387. data/app/components/ui/inline_code.rb +1 -0
  388. data/app/components/ui/input.rb +15 -15
  389. data/app/components/ui/input_group.rb +28 -28
  390. data/app/components/ui/input_group_addon.rb +27 -27
  391. data/app/components/ui/input_group_button.rb +35 -35
  392. data/app/components/ui/input_group_input.rb +39 -39
  393. data/app/components/ui/input_group_text.rb +26 -26
  394. data/app/components/ui/input_group_textarea.rb +39 -39
  395. data/app/components/ui/input_otp.rb +48 -48
  396. data/app/components/ui/input_otp_group.rb +21 -21
  397. data/app/components/ui/input_otp_separator.rb +28 -28
  398. data/app/components/ui/input_otp_slot.rb +28 -28
  399. data/app/components/ui/item.rb +20 -20
  400. data/app/components/ui/item_actions.rb +10 -10
  401. data/app/components/ui/item_content.rb +10 -10
  402. data/app/components/ui/item_description.rb +10 -10
  403. data/app/components/ui/item_footer.rb +10 -10
  404. data/app/components/ui/item_group.rb +10 -10
  405. data/app/components/ui/item_header.rb +10 -10
  406. data/app/components/ui/item_media.rb +11 -11
  407. data/app/components/ui/item_separator.rb +10 -10
  408. data/app/components/ui/item_title.rb +10 -10
  409. data/app/components/ui/kbd.rb +24 -24
  410. data/app/components/ui/kbd_group.rb +25 -25
  411. data/app/components/ui/label.rb +25 -25
  412. data/app/components/ui/large.rb +1 -0
  413. data/app/components/ui/lead.rb +1 -0
  414. data/app/components/ui/list.rb +1 -0
  415. data/app/components/ui/menubar.rb +31 -31
  416. data/app/components/ui/menubar_checkbox_item.rb +45 -45
  417. data/app/components/ui/menubar_content.rb +27 -27
  418. data/app/components/ui/menubar_item.rb +34 -34
  419. data/app/components/ui/menubar_label.rb +24 -24
  420. data/app/components/ui/menubar_menu.rb +24 -24
  421. data/app/components/ui/menubar_radio_group.rb +24 -24
  422. data/app/components/ui/menubar_radio_item.rb +47 -47
  423. data/app/components/ui/menubar_separator.rb +18 -18
  424. data/app/components/ui/menubar_shortcut.rb +22 -22
  425. data/app/components/ui/menubar_sub.rb +25 -25
  426. data/app/components/ui/menubar_sub_content.rb +22 -22
  427. data/app/components/ui/menubar_sub_trigger.rb +41 -41
  428. data/app/components/ui/menubar_trigger.rb +21 -21
  429. data/app/components/ui/muted.rb +1 -0
  430. data/app/components/ui/navigation_menu.rb +43 -43
  431. data/app/components/ui/navigation_menu_content.rb +28 -28
  432. data/app/components/ui/navigation_menu_item.rb +31 -31
  433. data/app/components/ui/navigation_menu_link.rb +60 -60
  434. data/app/components/ui/navigation_menu_list.rb +23 -23
  435. data/app/components/ui/navigation_menu_trigger.rb +44 -44
  436. data/app/components/ui/navigation_menu_viewport.rb +20 -20
  437. data/app/components/ui/p.rb +1 -0
  438. data/app/components/ui/pagination.rb +15 -15
  439. data/app/components/ui/pagination_content.rb +15 -15
  440. data/app/components/ui/pagination_ellipsis.rb +20 -20
  441. data/app/components/ui/pagination_item.rb +13 -13
  442. data/app/components/ui/pagination_link.rb +21 -21
  443. data/app/components/ui/pagination_next.rb +25 -25
  444. data/app/components/ui/pagination_previous.rb +25 -25
  445. data/app/components/ui/popover.rb +44 -44
  446. data/app/components/ui/popover_content.rb +25 -25
  447. data/app/components/ui/popover_trigger.rb +30 -30
  448. data/app/components/ui/progress.rb +32 -32
  449. data/app/components/ui/radio_button.rb +44 -44
  450. data/app/components/ui/resizable_handle.rb +49 -49
  451. data/app/components/ui/resizable_panel.rb +31 -31
  452. data/app/components/ui/resizable_panel_group.rb +37 -37
  453. data/app/components/ui/responsive_dialog.rb +81 -81
  454. data/app/components/ui/scroll_area.rb +54 -54
  455. data/app/components/ui/scroll_area_corner.rb +27 -27
  456. data/app/components/ui/scroll_area_scrollbar.rb +37 -37
  457. data/app/components/ui/scroll_area_thumb.rb +31 -31
  458. data/app/components/ui/scroll_area_viewport.rb +33 -33
  459. data/app/components/ui/select.rb +38 -38
  460. data/app/components/ui/select_content.rb +36 -36
  461. data/app/components/ui/select_group.rb +32 -32
  462. data/app/components/ui/select_item.rb +58 -58
  463. data/app/components/ui/select_label.rb +28 -28
  464. data/app/components/ui/select_scroll_down_button.rb +39 -39
  465. data/app/components/ui/select_scroll_up_button.rb +39 -39
  466. data/app/components/ui/select_trigger.rb +38 -38
  467. data/app/components/ui/separator.rb +35 -35
  468. data/app/components/ui/sheet.rb +14 -14
  469. data/app/components/ui/sheet_close.rb +32 -32
  470. data/app/components/ui/sheet_content.rb +45 -45
  471. data/app/components/ui/sheet_description.rb +17 -17
  472. data/app/components/ui/sheet_footer.rb +10 -10
  473. data/app/components/ui/sheet_header.rb +10 -10
  474. data/app/components/ui/sheet_overlay.rb +13 -13
  475. data/app/components/ui/sheet_title.rb +17 -17
  476. data/app/components/ui/sheet_trigger.rb +21 -21
  477. data/app/components/ui/sidebar.rb +85 -85
  478. data/app/components/ui/sidebar_content.rb +27 -27
  479. data/app/components/ui/sidebar_footer.rb +29 -29
  480. data/app/components/ui/sidebar_group.rb +45 -45
  481. data/app/components/ui/sidebar_group_action.rb +39 -39
  482. data/app/components/ui/sidebar_group_content.rb +35 -35
  483. data/app/components/ui/sidebar_group_label.rb +38 -38
  484. data/app/components/ui/sidebar_header.rb +29 -29
  485. data/app/components/ui/sidebar_input.rb +35 -35
  486. data/app/components/ui/sidebar_inset.rb +35 -35
  487. data/app/components/ui/sidebar_menu.rb +32 -32
  488. data/app/components/ui/sidebar_menu_action.rb +52 -52
  489. data/app/components/ui/sidebar_menu_badge.rb +32 -32
  490. data/app/components/ui/sidebar_menu_button.rb +63 -63
  491. data/app/components/ui/sidebar_menu_item.rb +38 -38
  492. data/app/components/ui/sidebar_menu_skeleton.rb +57 -57
  493. data/app/components/ui/sidebar_menu_sub.rb +43 -43
  494. data/app/components/ui/sidebar_menu_sub_button.rb +40 -40
  495. data/app/components/ui/sidebar_menu_sub_item.rb +27 -27
  496. data/app/components/ui/sidebar_provider.rb +66 -66
  497. data/app/components/ui/sidebar_rail.rb +28 -28
  498. data/app/components/ui/sidebar_separator.rb +25 -25
  499. data/app/components/ui/sidebar_trigger.rb +54 -54
  500. data/app/components/ui/skeleton.rb +37 -37
  501. data/app/components/ui/small.rb +1 -0
  502. data/app/components/ui/sonner_toaster.rb +49 -49
  503. data/app/components/ui/spinner.rb +36 -36
  504. data/app/components/ui/switch.rb +62 -62
  505. data/app/components/ui/table.rb +42 -42
  506. data/app/components/ui/table_body.rb +22 -22
  507. data/app/components/ui/table_caption.rb +11 -11
  508. data/app/components/ui/table_cell.rb +11 -11
  509. data/app/components/ui/table_footer.rb +22 -22
  510. data/app/components/ui/table_head.rb +11 -11
  511. data/app/components/ui/table_header.rb +22 -22
  512. data/app/components/ui/table_row.rb +19 -19
  513. data/app/components/ui/tabs.rb +36 -36
  514. data/app/components/ui/tabs_content.rb +26 -26
  515. data/app/components/ui/tabs_list.rb +23 -23
  516. data/app/components/ui/tabs_trigger.rb +29 -29
  517. data/app/components/ui/textarea.rb +15 -15
  518. data/app/components/ui/toggle.rb +38 -38
  519. data/app/components/ui/toggle_group.rb +53 -53
  520. data/app/components/ui/toggle_group_item.rb +61 -61
  521. data/app/components/ui/tooltip.rb +27 -27
  522. data/app/components/ui/tooltip_content.rb +31 -31
  523. data/app/components/ui/tooltip_trigger.rb +36 -36
  524. data/app/helpers/ui/combobox_behavior.rb +1 -1
  525. data/app/helpers/ui/empty_behavior.rb +6 -6
  526. data/app/helpers/ui/input_group_input_behavior.rb +1 -1
  527. data/app/helpers/ui/input_group_textarea_behavior.rb +1 -1
  528. data/app/helpers/ui/popover_content_behavior.rb +1 -1
  529. data/app/helpers/ui/popover_trigger_behavior.rb +1 -1
  530. data/app/helpers/ui/select_behavior.rb +61 -61
  531. data/app/helpers/ui/select_content_behavior.rb +31 -31
  532. data/app/helpers/ui/select_group_behavior.rb +24 -24
  533. data/app/helpers/ui/select_item_behavior.rb +34 -34
  534. data/app/helpers/ui/select_label_behavior.rb +23 -23
  535. data/app/helpers/ui/select_scroll_down_button_behavior.rb +38 -38
  536. data/app/helpers/ui/select_scroll_up_button_behavior.rb +38 -38
  537. data/app/helpers/ui/select_trigger_behavior.rb +29 -29
  538. data/app/helpers/ui/spinner_behavior.rb +1 -1
  539. data/app/javascript/ui/controllers/accordion_controller.js +15 -3
  540. data/app/javascript/ui/controllers/command_controller.js +4 -3
  541. data/app/view_components/ui/accordion_component.rb +31 -31
  542. data/app/view_components/ui/accordion_content_component.rb +24 -24
  543. data/app/view_components/ui/accordion_item_component.rb +37 -37
  544. data/app/view_components/ui/accordion_trigger_component.rb +25 -25
  545. data/app/view_components/ui/alert_component.rb +18 -18
  546. data/app/view_components/ui/alert_description_component.rb +16 -16
  547. data/app/view_components/ui/alert_title_component.rb +16 -16
  548. data/app/view_components/ui/aspect_ratio_component.rb +20 -20
  549. data/app/view_components/ui/avatar_component.rb +16 -16
  550. data/app/view_components/ui/avatar_fallback_component.rb +16 -16
  551. data/app/view_components/ui/avatar_image_component.rb +19 -19
  552. data/app/view_components/ui/badge_component.rb +18 -18
  553. data/app/view_components/ui/blockquote_component.rb +1 -0
  554. data/app/view_components/ui/breadcrumb_component.rb +28 -28
  555. data/app/view_components/ui/breadcrumb_ellipsis_component.rb +41 -41
  556. data/app/view_components/ui/breadcrumb_item_component.rb +24 -24
  557. data/app/view_components/ui/breadcrumb_link_component.rb +24 -24
  558. data/app/view_components/ui/breadcrumb_list_component.rb +24 -24
  559. data/app/view_components/ui/breadcrumb_page_component.rb +22 -22
  560. data/app/view_components/ui/breadcrumb_separator_component.rb +38 -38
  561. data/app/view_components/ui/button_component.rb +39 -39
  562. data/app/view_components/ui/button_group_component.rb +33 -33
  563. data/app/view_components/ui/button_group_separator_component.rb +29 -29
  564. data/app/view_components/ui/button_group_text_component.rb +25 -25
  565. data/app/view_components/ui/calendar_component.rb +179 -182
  566. data/app/view_components/ui/card_action_component.rb +10 -10
  567. data/app/view_components/ui/card_component.rb +10 -10
  568. data/app/view_components/ui/card_content_component.rb +10 -10
  569. data/app/view_components/ui/card_description_component.rb +10 -10
  570. data/app/view_components/ui/card_footer_component.rb +10 -10
  571. data/app/view_components/ui/card_header_component.rb +10 -10
  572. data/app/view_components/ui/card_title_component.rb +10 -10
  573. data/app/view_components/ui/carousel_component.rb +14 -13
  574. data/app/view_components/ui/carousel_content_component.rb +12 -11
  575. data/app/view_components/ui/carousel_item_component.rb +11 -10
  576. data/app/view_components/ui/carousel_next_component.rb +15 -27
  577. data/app/view_components/ui/carousel_previous_component.rb +15 -27
  578. data/app/view_components/ui/checkbox_component.rb +48 -48
  579. data/app/view_components/ui/collapsible_component.rb +17 -17
  580. data/app/view_components/ui/collapsible_content_component.rb +11 -11
  581. data/app/view_components/ui/collapsible_trigger_component.rb +15 -15
  582. data/app/view_components/ui/combobox_wrapper_component.rb +53 -53
  583. data/app/view_components/ui/command_component.rb +12 -11
  584. data/app/view_components/ui/command_dialog_component.rb +17 -16
  585. data/app/view_components/ui/command_empty_component.rb +10 -10
  586. data/app/view_components/ui/command_group_component.rb +16 -16
  587. data/app/view_components/ui/command_input_component.rb +15 -15
  588. data/app/view_components/ui/command_item_component.rb +12 -12
  589. data/app/view_components/ui/command_list_component.rb +10 -10
  590. data/app/view_components/ui/command_separator_component.rb +10 -10
  591. data/app/view_components/ui/command_shortcut_component.rb +10 -10
  592. data/app/view_components/ui/context_menu_checkbox_item_component.rb +36 -37
  593. data/app/view_components/ui/context_menu_component.rb +14 -14
  594. data/app/view_components/ui/context_menu_content_component.rb +14 -14
  595. data/app/view_components/ui/context_menu_item_component.rb +22 -22
  596. data/app/view_components/ui/context_menu_label_component.rb +16 -16
  597. data/app/view_components/ui/context_menu_radio_group_component.rb +13 -13
  598. data/app/view_components/ui/context_menu_radio_item_component.rb +36 -37
  599. data/app/view_components/ui/context_menu_separator_component.rb +11 -11
  600. data/app/view_components/ui/context_menu_shortcut_component.rb +13 -13
  601. data/app/view_components/ui/context_menu_trigger_component.rb +14 -14
  602. data/app/view_components/ui/date_picker_component.rb +125 -125
  603. data/app/view_components/ui/date_picker_input_component.rb +68 -68
  604. data/app/view_components/ui/date_picker_trigger_component.rb +67 -67
  605. data/app/view_components/ui/dialog_close_component.rb +61 -61
  606. data/app/view_components/ui/dialog_component.rb +45 -45
  607. data/app/view_components/ui/dialog_content_component.rb +23 -23
  608. data/app/view_components/ui/dialog_description_component.rb +21 -21
  609. data/app/view_components/ui/dialog_footer_component.rb +17 -17
  610. data/app/view_components/ui/dialog_header_component.rb +18 -18
  611. data/app/view_components/ui/dialog_overlay_component.rb +30 -30
  612. data/app/view_components/ui/dialog_title_component.rb +21 -21
  613. data/app/view_components/ui/dialog_trigger_component.rb +61 -61
  614. data/app/view_components/ui/drawer_close_component.rb +30 -30
  615. data/app/view_components/ui/drawer_component.rb +76 -76
  616. data/app/view_components/ui/drawer_content_component.rb +26 -26
  617. data/app/view_components/ui/drawer_description_component.rb +17 -17
  618. data/app/view_components/ui/drawer_footer_component.rb +20 -20
  619. data/app/view_components/ui/drawer_handle_component.rb +19 -19
  620. data/app/view_components/ui/drawer_header_component.rb +20 -20
  621. data/app/view_components/ui/drawer_overlay_component.rb +22 -22
  622. data/app/view_components/ui/drawer_title_component.rb +17 -17
  623. data/app/view_components/ui/drawer_trigger_component.rb +60 -60
  624. data/app/view_components/ui/dropdown_menu_checkbox_item_component.rb +26 -26
  625. data/app/view_components/ui/dropdown_menu_component.rb +45 -45
  626. data/app/view_components/ui/dropdown_menu_content_component.rb +13 -13
  627. data/app/view_components/ui/dropdown_menu_item_component.rb +16 -16
  628. data/app/view_components/ui/dropdown_menu_label_component.rb +13 -13
  629. data/app/view_components/ui/dropdown_menu_radio_group_component.rb +12 -12
  630. data/app/view_components/ui/dropdown_menu_radio_item_component.rb +27 -27
  631. data/app/view_components/ui/dropdown_menu_separator_component.rb +11 -11
  632. data/app/view_components/ui/dropdown_menu_shortcut_component.rb +12 -12
  633. data/app/view_components/ui/dropdown_menu_sub_component.rb +12 -12
  634. data/app/view_components/ui/dropdown_menu_sub_content_component.rb +14 -14
  635. data/app/view_components/ui/dropdown_menu_sub_trigger_component.rb +22 -22
  636. data/app/view_components/ui/dropdown_menu_trigger_component.rb +46 -46
  637. data/app/view_components/ui/empty_component.rb +12 -12
  638. data/app/view_components/ui/empty_content_component.rb +12 -12
  639. data/app/view_components/ui/empty_description_component.rb +12 -12
  640. data/app/view_components/ui/empty_header_component.rb +12 -12
  641. data/app/view_components/ui/empty_media_component.rb +13 -13
  642. data/app/view_components/ui/empty_title_component.rb +12 -12
  643. data/app/view_components/ui/field_component.rb +36 -36
  644. data/app/view_components/ui/field_content_component.rb +22 -22
  645. data/app/view_components/ui/field_description_component.rb +22 -22
  646. data/app/view_components/ui/field_error_component.rb +55 -55
  647. data/app/view_components/ui/field_group_component.rb +27 -27
  648. data/app/view_components/ui/field_label_component.rb +24 -24
  649. data/app/view_components/ui/field_legend_component.rb +29 -29
  650. data/app/view_components/ui/field_separator_component.rb +43 -43
  651. data/app/view_components/ui/field_set_component.rb +25 -25
  652. data/app/view_components/ui/field_title_component.rb +22 -22
  653. data/app/view_components/ui/h3_component.rb +1 -0
  654. data/app/view_components/ui/h4_component.rb +1 -0
  655. data/app/view_components/ui/hover_card_component.rb +24 -24
  656. data/app/view_components/ui/hover_card_content_component.rb +30 -30
  657. data/app/view_components/ui/hover_card_trigger_component.rb +47 -47
  658. data/app/view_components/ui/inline_code_component.rb +1 -0
  659. data/app/view_components/ui/input_component.rb +17 -17
  660. data/app/view_components/ui/input_group_addon_component.rb +31 -31
  661. data/app/view_components/ui/input_group_button_component.rb +32 -32
  662. data/app/view_components/ui/input_group_component.rb +30 -30
  663. data/app/view_components/ui/input_group_input_component.rb +38 -38
  664. data/app/view_components/ui/input_group_text_component.rb +28 -28
  665. data/app/view_components/ui/input_group_textarea_component.rb +38 -38
  666. data/app/view_components/ui/input_otp_component.rb +52 -52
  667. data/app/view_components/ui/input_otp_group_component.rb +23 -23
  668. data/app/view_components/ui/input_otp_separator_component.rb +29 -29
  669. data/app/view_components/ui/input_otp_slot_component.rb +28 -28
  670. data/app/view_components/ui/item_actions_component.rb +12 -12
  671. data/app/view_components/ui/item_component.rb +23 -23
  672. data/app/view_components/ui/item_content_component.rb +12 -12
  673. data/app/view_components/ui/item_description_component.rb +12 -12
  674. data/app/view_components/ui/item_footer_component.rb +12 -12
  675. data/app/view_components/ui/item_group_component.rb +12 -12
  676. data/app/view_components/ui/item_header_component.rb +12 -12
  677. data/app/view_components/ui/item_media_component.rb +13 -13
  678. data/app/view_components/ui/item_separator_component.rb +12 -12
  679. data/app/view_components/ui/item_title_component.rb +12 -12
  680. data/app/view_components/ui/kbd_component.rb +25 -25
  681. data/app/view_components/ui/kbd_group_component.rb +26 -26
  682. data/app/view_components/ui/label_component.rb +18 -18
  683. data/app/view_components/ui/large_component.rb +1 -0
  684. data/app/view_components/ui/lead_component.rb +1 -0
  685. data/app/view_components/ui/list_component.rb +1 -0
  686. data/app/view_components/ui/menubar_checkbox_item_component.rb +40 -40
  687. data/app/view_components/ui/menubar_component.rb +19 -19
  688. data/app/view_components/ui/menubar_content_component.rb +21 -21
  689. data/app/view_components/ui/menubar_item_component.rb +26 -26
  690. data/app/view_components/ui/menubar_label_component.rb +18 -18
  691. data/app/view_components/ui/menubar_menu_component.rb +20 -20
  692. data/app/view_components/ui/menubar_radio_group_component.rb +21 -21
  693. data/app/view_components/ui/menubar_radio_item_component.rb +41 -41
  694. data/app/view_components/ui/menubar_separator_component.rb +16 -16
  695. data/app/view_components/ui/menubar_shortcut_component.rb +17 -17
  696. data/app/view_components/ui/menubar_sub_component.rb +20 -20
  697. data/app/view_components/ui/menubar_sub_content_component.rb +20 -20
  698. data/app/view_components/ui/menubar_sub_trigger_component.rb +37 -37
  699. data/app/view_components/ui/menubar_trigger_component.rb +18 -18
  700. data/app/view_components/ui/muted_component.rb +1 -0
  701. data/app/view_components/ui/navigation_menu_component.rb +37 -37
  702. data/app/view_components/ui/navigation_menu_content_component.rb +18 -18
  703. data/app/view_components/ui/navigation_menu_item_component.rb +18 -18
  704. data/app/view_components/ui/navigation_menu_link_component.rb +83 -83
  705. data/app/view_components/ui/navigation_menu_list_component.rb +16 -16
  706. data/app/view_components/ui/navigation_menu_trigger_component.rb +38 -38
  707. data/app/view_components/ui/navigation_menu_viewport_component.rb +16 -16
  708. data/app/view_components/ui/p_component.rb +1 -0
  709. data/app/view_components/ui/pagination_component.rb +14 -14
  710. data/app/view_components/ui/pagination_content_component.rb +14 -14
  711. data/app/view_components/ui/pagination_ellipsis_component.rb +20 -20
  712. data/app/view_components/ui/pagination_item_component.rb +12 -12
  713. data/app/view_components/ui/pagination_link_component.rb +21 -21
  714. data/app/view_components/ui/pagination_next_component.rb +24 -24
  715. data/app/view_components/ui/pagination_previous_component.rb +25 -25
  716. data/app/view_components/ui/popover_component.rb +50 -50
  717. data/app/view_components/ui/popover_content_component.rb +36 -36
  718. data/app/view_components/ui/popover_trigger_component.rb +60 -60
  719. data/app/view_components/ui/progress_component.rb +33 -33
  720. data/app/view_components/ui/radio_button_component.rb +49 -49
  721. data/app/view_components/ui/resizable_handle_component.rb +27 -27
  722. data/app/view_components/ui/resizable_panel_component.rb +33 -33
  723. data/app/view_components/ui/resizable_panel_group_component.rb +39 -39
  724. data/app/view_components/ui/responsive_dialog_component.rb +70 -70
  725. data/app/view_components/ui/scroll_area_component.rb +39 -39
  726. data/app/view_components/ui/scroll_area_corner_component.rb +18 -18
  727. data/app/view_components/ui/scroll_area_scrollbar_component.rb +28 -28
  728. data/app/view_components/ui/scroll_area_thumb_component.rb +23 -23
  729. data/app/view_components/ui/scroll_area_viewport_component.rb +25 -25
  730. data/app/view_components/ui/select_component.rb +27 -27
  731. data/app/view_components/ui/select_content_component.rb +35 -36
  732. data/app/view_components/ui/select_group_component.rb +22 -22
  733. data/app/view_components/ui/select_item_component.rb +39 -40
  734. data/app/view_components/ui/select_label_component.rb +18 -18
  735. data/app/view_components/ui/select_scroll_down_button_component.rb +29 -29
  736. data/app/view_components/ui/select_scroll_up_button_component.rb +29 -29
  737. data/app/view_components/ui/select_trigger_component.rb +22 -22
  738. data/app/view_components/ui/separator_component.rb +23 -23
  739. data/app/view_components/ui/sheet_close_component.rb +61 -61
  740. data/app/view_components/ui/sheet_component.rb +45 -45
  741. data/app/view_components/ui/sheet_content_component.rb +43 -43
  742. data/app/view_components/ui/sheet_description_component.rb +20 -20
  743. data/app/view_components/ui/sheet_footer_component.rb +17 -17
  744. data/app/view_components/ui/sheet_header_component.rb +17 -17
  745. data/app/view_components/ui/sheet_overlay_component.rb +30 -30
  746. data/app/view_components/ui/sheet_title_component.rb +20 -20
  747. data/app/view_components/ui/sheet_trigger_component.rb +50 -50
  748. data/app/view_components/ui/skeleton_component.rb +23 -23
  749. data/app/view_components/ui/slider_component.rb +55 -55
  750. data/app/view_components/ui/slider_range_component.rb +19 -19
  751. data/app/view_components/ui/slider_thumb_component.rb +25 -25
  752. data/app/view_components/ui/slider_track_component.rb +22 -22
  753. data/app/view_components/ui/small_component.rb +1 -0
  754. data/app/view_components/ui/sonner_toaster_component.rb +49 -49
  755. data/app/view_components/ui/spinner_component.rb +41 -41
  756. data/app/view_components/ui/switch_component.rb +52 -52
  757. data/app/view_components/ui/table_body_component.rb +14 -14
  758. data/app/view_components/ui/table_caption_component.rb +10 -10
  759. data/app/view_components/ui/table_cell_component.rb +10 -10
  760. data/app/view_components/ui/table_component.rb +20 -20
  761. data/app/view_components/ui/table_footer_component.rb +14 -14
  762. data/app/view_components/ui/table_head_component.rb +10 -10
  763. data/app/view_components/ui/table_header_component.rb +14 -14
  764. data/app/view_components/ui/table_row_component.rb +16 -16
  765. data/app/view_components/ui/tabs_component.rb +33 -33
  766. data/app/view_components/ui/tabs_content_component.rb +28 -28
  767. data/app/view_components/ui/tabs_list_component.rb +24 -24
  768. data/app/view_components/ui/tabs_trigger_component.rb +31 -31
  769. data/app/view_components/ui/textarea_component.rb +14 -14
  770. data/app/view_components/ui/toggle_component.rb +43 -43
  771. data/app/view_components/ui/toggle_group_component.rb +60 -60
  772. data/app/view_components/ui/toggle_group_item_component.rb +62 -62
  773. data/app/view_components/ui/tooltip_component.rb +14 -14
  774. data/app/view_components/ui/tooltip_content_component.rb +23 -23
  775. data/app/view_components/ui/tooltip_trigger_component.rb +19 -19
  776. data/app/views/ui/_command.html.erb +2 -0
  777. data/app/views/ui/carousel/_next.html.erb +1 -1
  778. data/app/views/ui/carousel/_previous.html.erb +1 -1
  779. data/lib/ui/version.rb +1 -1
  780. metadata +1 -1
@@ -1,46 +1,61 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module UI
4
- # RadioButton Behavior - Shared logic for radio button component across ERB, ViewComponent, and Phlex
5
- module RadioButtonBehavior
6
- def radio_button_html_attributes
7
- attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
8
- {
9
- type: "radio",
10
- class: radio_button_classes,
11
- name: @name,
12
- id: radio_button_id,
13
- value: @value,
14
- checked: (@checked ? true : nil),
15
- disabled: (@disabled ? true : nil),
16
- required: (@required ? true : nil),
17
- data: radio_button_data_attributes
18
- }.merge(attributes_value).compact
19
- end
3
+ # UI::RadioButtonBehavior
4
+ #
5
+ # @ui_component Radio Button
6
+ # @ui_category forms
7
+ #
8
+ # @ui_anatomy Radio Button - Root container for radio button (required)
9
+ #
10
+ # @ui_feature Custom styling with Tailwind classes
11
+ # @ui_feature Disabled state support
12
+ # @ui_feature ARIA attributes for accessibility
13
+ #
14
+ # @ui_aria_pattern Radio Group
15
+ # @ui_aria_reference https://www.w3.org/WAI/ARIA/apg/patterns/radio/
16
+ #
17
+ # @ui_related toggle_group
18
+ # @ui_related checkbox
19
+ # @ui_related select
20
+ #
21
+ module UI::RadioButtonBehavior
22
+ def radio_button_html_attributes
23
+ attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
24
+ {
25
+ type: "radio",
26
+ class: radio_button_classes,
27
+ name: @name,
28
+ id: radio_button_id,
29
+ value: @value,
30
+ checked: (@checked ? true : nil),
31
+ disabled: (@disabled ? true : nil),
32
+ required: (@required ? true : nil),
33
+ data: radio_button_data_attributes
34
+ }.merge(attributes_value).compact
35
+ end
20
36
 
21
- def radio_button_classes
22
- classes_value = respond_to?(:classes, true) ? classes : @classes
23
- TailwindMerge::Merger.new.merge([
24
- radio_button_base_classes,
25
- classes_value
37
+ def radio_button_classes
38
+ classes_value = respond_to?(:classes, true) ? classes : @classes
39
+ TailwindMerge::Merger.new.merge([
40
+ radio_button_base_classes,
41
+ classes_value
26
42
 
27
- ].compact.join(" "))
28
- end
43
+ ].compact.join(" "))
44
+ end
29
45
 
30
- def radio_button_data_attributes
31
- {
32
- slot: "radio-group-item"
33
- }
34
- end
46
+ def radio_button_data_attributes
47
+ {
48
+ slot: "radio-group-item"
49
+ }
50
+ end
35
51
 
36
- def radio_button_id
37
- @id || "radio-#{SecureRandom.hex(4)}"
38
- end
52
+ def radio_button_id
53
+ @id || "radio-#{SecureRandom.hex(4)}"
54
+ end
39
55
 
40
- private
56
+ private
41
57
 
42
- def radio_button_base_classes
43
- "peer appearance-none border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer"
44
- end
58
+ def radio_button_base_classes
59
+ "peer appearance-none border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer"
45
60
  end
46
61
  end
@@ -1,81 +1,81 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Shared behavior for ResizableHandle component
4
- # Handles data attributes for resize handles
5
- module UI::ResizableHandleBehavior
6
- # Base CSS classes for the handle
7
- # The handle uses a thin visual line (w-px) but has padding for easier interaction
8
- def handle_base_classes
9
- base = [
10
- "relative z-10 flex shrink-0 items-center justify-center",
11
- "w-2 -mx-[3.5px]", # 8px wide handle with negative margin to overlap panels
12
- "bg-transparent cursor-col-resize",
13
- "touch-none select-none", # Prevent scroll interference on touch devices
14
- # The visible line is drawn with ::after
15
- "after:absolute after:inset-y-0 after:left-1/2 after:w-px after:-translate-x-1/2 after:bg-border",
16
- "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1",
17
- # Vertical direction
18
- "data-[panel-group-direction=vertical]:h-2 data-[panel-group-direction=vertical]:w-full",
19
- "data-[panel-group-direction=vertical]:-my-[3.5px] data-[panel-group-direction=vertical]:mx-0",
20
- "data-[panel-group-direction=vertical]:cursor-row-resize",
21
- "data-[panel-group-direction=vertical]:after:inset-x-0 data-[panel-group-direction=vertical]:after:inset-y-auto",
22
- "data-[panel-group-direction=vertical]:after:top-1/2 data-[panel-group-direction=vertical]:after:left-0",
23
- "data-[panel-group-direction=vertical]:after:h-px data-[panel-group-direction=vertical]:after:w-full",
24
- "data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0",
25
- "[&[data-panel-group-direction=vertical]>div]:rotate-90"
26
- ]
27
- base << @classes if @classes.present?
28
- base.join(" ")
29
- end
3
+ # Shared behavior for ResizableHandle component
4
+ # Handles data attributes for resize handles
5
+ module UI::ResizableHandleBehavior
6
+ # Base CSS classes for the handle
7
+ # The handle uses a thin visual line (w-px) but has padding for easier interaction
8
+ def handle_base_classes
9
+ base = [
10
+ "relative z-10 flex shrink-0 items-center justify-center",
11
+ "w-2 -mx-[3.5px]", # 8px wide handle with negative margin to overlap panels
12
+ "bg-transparent cursor-col-resize",
13
+ "touch-none select-none", # Prevent scroll interference on touch devices
14
+ # The visible line is drawn with ::after
15
+ "after:absolute after:inset-y-0 after:left-1/2 after:w-px after:-translate-x-1/2 after:bg-border",
16
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1",
17
+ # Vertical direction
18
+ "data-[panel-group-direction=vertical]:h-2 data-[panel-group-direction=vertical]:w-full",
19
+ "data-[panel-group-direction=vertical]:-my-[3.5px] data-[panel-group-direction=vertical]:mx-0",
20
+ "data-[panel-group-direction=vertical]:cursor-row-resize",
21
+ "data-[panel-group-direction=vertical]:after:inset-x-0 data-[panel-group-direction=vertical]:after:inset-y-auto",
22
+ "data-[panel-group-direction=vertical]:after:top-1/2 data-[panel-group-direction=vertical]:after:left-0",
23
+ "data-[panel-group-direction=vertical]:after:h-px data-[panel-group-direction=vertical]:after:w-full",
24
+ "data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0",
25
+ "[&[data-panel-group-direction=vertical]>div]:rotate-90"
26
+ ]
27
+ base << @classes if @classes.present?
28
+ base.join(" ")
29
+ end
30
30
 
31
- # Generate data attributes for the handle
32
- def handle_data_attributes
33
- {
34
- ui__resizable_target: "handle",
35
- resize_handle: "",
36
- resize_handle_state: "inactive"
37
- }
38
- end
31
+ # Generate data attributes for the handle
32
+ def handle_data_attributes
33
+ {
34
+ ui__resizable_target: "handle",
35
+ resize_handle: "",
36
+ resize_handle_state: "inactive"
37
+ }
38
+ end
39
39
 
40
- # Merge user-provided data attributes with handle data
41
- def merged_handle_data_attributes
42
- user_data = @attributes&.fetch(:data, {}) || {}
43
- user_data.merge(handle_data_attributes)
44
- end
40
+ # Merge user-provided data attributes with handle data
41
+ def merged_handle_data_attributes
42
+ user_data = @attributes&.fetch(:data, {}) || {}
43
+ user_data.merge(handle_data_attributes)
44
+ end
45
45
 
46
- # Stimulus actions for the handle
47
- def handle_actions
48
- [
49
- "pointerdown->ui--resizable#startDrag",
50
- "pointerenter->ui--resizable#handleEnter",
51
- "pointerleave->ui--resizable#handleLeave",
52
- "focus->ui--resizable#handleFocus",
53
- "blur->ui--resizable#handleBlur"
54
- ].join(" ")
55
- end
46
+ # Stimulus actions for the handle
47
+ def handle_actions
48
+ [
49
+ "pointerdown->ui--resizable#startDrag",
50
+ "pointerenter->ui--resizable#handleEnter",
51
+ "pointerleave->ui--resizable#handleLeave",
52
+ "focus->ui--resizable#handleFocus",
53
+ "blur->ui--resizable#handleBlur"
54
+ ].join(" ")
55
+ end
56
56
 
57
- # Build complete HTML attributes hash for handle
58
- def handle_html_attributes
59
- base_attrs = @attributes&.except(:data) || {}
60
- data_attrs = merged_handle_data_attributes
61
- data_attrs[:action] = handle_actions
57
+ # Build complete HTML attributes hash for handle
58
+ def handle_html_attributes
59
+ base_attrs = @attributes&.except(:data) || {}
60
+ data_attrs = merged_handle_data_attributes
61
+ data_attrs[:action] = handle_actions
62
62
 
63
- base_attrs.merge(
64
- class: handle_base_classes,
65
- "data-slot": "resizable-handle",
66
- tabindex: "0",
67
- role: "separator",
68
- "aria-valuenow": "50",
69
- "aria-valuemin": "0",
70
- "aria-valuemax": "100",
71
- data: data_attrs
72
- )
73
- end
63
+ base_attrs.merge(
64
+ class: handle_base_classes,
65
+ "data-slot": "resizable-handle",
66
+ tabindex: "0",
67
+ role: "separator",
68
+ "aria-valuenow": "50",
69
+ "aria-valuemin": "0",
70
+ "aria-valuemax": "100",
71
+ data: data_attrs
72
+ )
73
+ end
74
74
 
75
- # CSS classes for the grip icon container (when with_handle is true)
76
- def grip_container_classes
77
- [
78
- "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border"
79
- ].join(" ")
80
- end
81
- end
75
+ # CSS classes for the grip icon container (when with_handle is true)
76
+ def grip_container_classes
77
+ [
78
+ "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border"
79
+ ].join(" ")
80
+ end
81
+ end
@@ -1,53 +1,60 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Shared behavior for ResizablePanel component
4
- # Handles data attributes for individual panels
5
- module UI::ResizablePanelBehavior
6
- # Base CSS classes for the panel
7
- # Uses min-w-0/min-h-0 and overflow-hidden to allow panels to shrink to 0
8
- def panel_base_classes
9
- classes = ["relative overflow-hidden min-w-0 min-h-0"]
10
- classes << @classes if @classes.present?
11
- classes.join(" ")
12
- end
3
+ # UI::ResizablePanelBehavior
4
+ #
5
+ # @ui_component Resizable Panel
6
+ # @ui_description ResizablePanel component (Phlex) Individual resizable panel within a panel group
7
+ # @ui_category other
8
+ #
9
+ # @ui_anatomy Resizable Panel - Resizable Panel component part (required)
10
+ # @ui_anatomy Group - Container for grouping related items
11
+ #
12
+ module UI::ResizablePanelBehavior
13
+ # Base CSS classes for the panel
14
+ # Uses min-w-0/min-h-0 and overflow-hidden to allow panels to shrink to 0
15
+ def panel_base_classes
16
+ classes = ["relative overflow-hidden min-w-0 min-h-0"]
17
+ classes << @classes if @classes.present?
18
+ classes.join(" ")
19
+ end
13
20
 
14
- # Generate data attributes for the panel
15
- def panel_data_attributes
16
- attrs = {
17
- ui__resizable_target: "panel"
18
- }
19
- attrs[:default_size] = @default_size if @default_size
20
- attrs[:min_size] = @min_size if @min_size
21
- attrs[:max_size] = @max_size if @max_size
22
- attrs
23
- end
21
+ # Generate data attributes for the panel
22
+ def panel_data_attributes
23
+ attrs = {
24
+ ui__resizable_target: "panel"
25
+ }
26
+ attrs[:default_size] = @default_size if @default_size
27
+ attrs[:min_size] = @min_size if @min_size
28
+ attrs[:max_size] = @max_size if @max_size
29
+ attrs
30
+ end
24
31
 
25
- # Merge user-provided data attributes with panel data
26
- def merged_panel_data_attributes
27
- user_data = @attributes&.fetch(:data, {}) || {}
28
- user_data.merge(panel_data_attributes)
29
- end
32
+ # Merge user-provided data attributes with panel data
33
+ def merged_panel_data_attributes
34
+ user_data = @attributes&.fetch(:data, {}) || {}
35
+ user_data.merge(panel_data_attributes)
36
+ end
30
37
 
31
- # Build complete HTML attributes hash for panel
32
- def panel_html_attributes
33
- base_attrs = @attributes&.except(:data) || {}
38
+ # Build complete HTML attributes hash for panel
39
+ def panel_html_attributes
40
+ base_attrs = @attributes&.except(:data) || {}
34
41
 
35
- # Use flex-grow for proportional sizing instead of flex-basis percentage
36
- # This works correctly with min-height containers in vertical layouts
37
- style_parts = []
38
- if @default_size
39
- style_parts << "flex-grow: #{@default_size}"
40
- style_parts << "flex-shrink: #{@default_size}"
41
- style_parts << "flex-basis: 0"
42
- end
42
+ # Use flex-grow for proportional sizing instead of flex-basis percentage
43
+ # This works correctly with min-height containers in vertical layouts
44
+ style_parts = []
45
+ if @default_size
46
+ style_parts << "flex-grow: #{@default_size}"
47
+ style_parts << "flex-shrink: #{@default_size}"
48
+ style_parts << "flex-basis: 0"
49
+ end
43
50
 
44
- attrs = base_attrs.merge(
45
- class: panel_base_classes,
46
- "data-slot": "resizable-panel",
47
- data: merged_panel_data_attributes
48
- )
51
+ attrs = base_attrs.merge(
52
+ class: panel_base_classes,
53
+ "data-slot": "resizable-panel",
54
+ data: merged_panel_data_attributes
55
+ )
49
56
 
50
- attrs[:style] = style_parts.join("; ") if style_parts.any?
51
- attrs
52
- end
53
- end
57
+ attrs[:style] = style_parts.join("; ") if style_parts.any?
58
+ attrs
59
+ end
60
+ end
@@ -1,41 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Shared behavior for ResizablePanelGroup container component
4
- # Handles Stimulus controller setup and data attributes
5
- module UI::ResizablePanelGroupBehavior
6
- # Generate Stimulus controller data attributes
7
- def panel_group_data_attributes
8
- {
9
- controller: "ui--resizable",
10
- ui__resizable_direction_value: @direction || "horizontal",
11
- ui__resizable_keyboard_resize_by_value: @keyboard_resize_by || 10
12
- }
13
- end
3
+ # Shared behavior for ResizablePanelGroup container component
4
+ # Handles Stimulus controller setup and data attributes
5
+ module UI::ResizablePanelGroupBehavior
6
+ # Generate Stimulus controller data attributes
7
+ def panel_group_data_attributes
8
+ {
9
+ controller: "ui--resizable",
10
+ ui__resizable_direction_value: @direction || "horizontal",
11
+ ui__resizable_keyboard_resize_by_value: @keyboard_resize_by || 10
12
+ }
13
+ end
14
14
 
15
- # Merge user-provided data attributes with panel group controller data
16
- def merged_panel_group_data_attributes
17
- user_data = @attributes&.fetch(:data, {}) || {}
18
- user_data.merge(panel_group_data_attributes)
19
- end
15
+ # Merge user-provided data attributes with panel group controller data
16
+ def merged_panel_group_data_attributes
17
+ user_data = @attributes&.fetch(:data, {}) || {}
18
+ user_data.merge(panel_group_data_attributes)
19
+ end
20
20
 
21
- # Base CSS classes for the panel group container
22
- def panel_group_base_classes
23
- classes = [
24
- "flex h-full w-full overflow-hidden",
25
- @direction == "vertical" ? "flex-col" : "flex-row"
26
- ]
27
- classes << @classes if @classes.present?
28
- classes.join(" ")
29
- end
21
+ # Base CSS classes for the panel group container
22
+ def panel_group_base_classes
23
+ classes = [
24
+ "flex h-full w-full overflow-hidden",
25
+ (@direction == "vertical") ? "flex-col" : "flex-row"
26
+ ]
27
+ classes << @classes if @classes.present?
28
+ classes.join(" ")
29
+ end
30
30
 
31
- # Build complete HTML attributes hash for panel group container
32
- def panel_group_html_attributes
33
- base_attrs = @attributes&.except(:data) || {}
34
- base_attrs.merge(
35
- class: panel_group_base_classes,
36
- "data-panel-group-direction": @direction || "horizontal",
37
- "data-slot": "resizable-panel-group",
38
- data: merged_panel_group_data_attributes
39
- )
40
- end
41
- end
31
+ # Build complete HTML attributes hash for panel group container
32
+ def panel_group_html_attributes
33
+ base_attrs = @attributes&.except(:data) || {}
34
+ base_attrs.merge(
35
+ class: panel_group_base_classes,
36
+ "data-panel-group-direction": @direction || "horizontal",
37
+ "data-slot": "resizable-panel-group",
38
+ data: merged_panel_group_data_attributes
39
+ )
40
+ end
41
+ end
@@ -2,40 +2,50 @@
2
2
 
3
3
  require "tailwind_merge"
4
4
 
5
- # Shared behavior for ResponsiveDialog component
6
- # Combines Dialog (desktop) and Drawer (mobile) with responsive switching
7
- module UI::ResponsiveDialogBehavior
8
- # Generate data attributes for Stimulus controller
9
- def responsive_dialog_data_attributes
10
- {
11
- controller: "ui--responsive-dialog",
12
- ui__responsive_dialog_open_value: @open,
13
- ui__responsive_dialog_breakpoint_value: @breakpoint || 768
14
- }
15
- end
5
+ # UI::ResponsiveDialogBehavior
6
+ #
7
+ # @ui_component Responsive Dialog
8
+ # @ui_description ResponsiveDialog - Renders Dialog on desktop, Drawer on mobile Uses hybrid CSS + Stimulus approach for responsive switching at 768px (md breakpoint)
9
+ # @ui_category other
10
+ #
11
+ # @ui_anatomy Responsive Dialog - Root container with state management (required)
12
+ #
13
+ # @ui_feature Custom styling with Tailwind classes
14
+ # @ui_feature Focus management
15
+ # @ui_feature Animation support
16
+ #
17
+ module UI::ResponsiveDialogBehavior
18
+ # Generate data attributes for Stimulus controller
19
+ def responsive_dialog_data_attributes
20
+ {
21
+ controller: "ui--responsive-dialog",
22
+ ui__responsive_dialog_open_value: @open,
23
+ ui__responsive_dialog_breakpoint_value: @breakpoint || 768
24
+ }
25
+ end
16
26
 
17
- # Merge user-provided data attributes
18
- def merged_responsive_dialog_data_attributes
19
- user_data = @attributes&.fetch(:data, {}) || {}
20
- user_data.merge(responsive_dialog_data_attributes)
21
- end
27
+ # Merge user-provided data attributes
28
+ def merged_responsive_dialog_data_attributes
29
+ user_data = @attributes&.fetch(:data, {}) || {}
30
+ user_data.merge(responsive_dialog_data_attributes)
31
+ end
22
32
 
23
- # Build complete HTML attributes hash
24
- def responsive_dialog_html_attributes
25
- base_attrs = @attributes&.except(:data) || {}
26
- base_attrs.merge(
27
- class: responsive_dialog_classes,
28
- data: merged_responsive_dialog_data_attributes
29
- )
30
- end
33
+ # Build complete HTML attributes hash
34
+ def responsive_dialog_html_attributes
35
+ base_attrs = @attributes&.except(:data) || {}
36
+ base_attrs.merge(
37
+ class: responsive_dialog_classes,
38
+ data: merged_responsive_dialog_data_attributes
39
+ )
40
+ end
31
41
 
32
- # Base CSS classes
33
- def responsive_dialog_base_classes
34
- ""
35
- end
42
+ # Base CSS classes
43
+ def responsive_dialog_base_classes
44
+ ""
45
+ end
36
46
 
37
- # Generate final classes using TailwindMerge
38
- def responsive_dialog_classes
39
- TailwindMerge::Merger.new.merge([responsive_dialog_base_classes, @classes].compact.join(" "))
40
- end
41
- end
47
+ # Generate final classes using TailwindMerge
48
+ def responsive_dialog_classes
49
+ TailwindMerge::Merger.new.merge([responsive_dialog_base_classes, @classes].compact.join(" "))
50
+ end
51
+ end
@@ -2,8 +2,23 @@
2
2
 
3
3
  # UI::ScrollAreaBehavior
4
4
  #
5
- # Shared behavior for ScrollArea root across ERB, ViewComponent, and Phlex implementations.
6
- # This module provides consistent HTML attribute generation and styling.
5
+ # @ui_component Scroll Area
6
+ # @ui_description ScrollArea - Phlex implementation
7
+ # @ui_category layout
8
+ #
9
+ # @ui_anatomy Scroll Area - Augments native scroll functionality for custom, cross-browser styling. (required)
10
+ # @ui_anatomy Viewport - Scrollable content container with hidden native scrollbar.
11
+ #
12
+ # @ui_feature Custom styling with Tailwind classes
13
+ #
14
+ # @ui_aria_pattern Scrollable Region
15
+ # @ui_aria_reference https://www.w3.org/WAI/ARIA/apg/patterns/landmarks/
16
+ #
17
+ # @ui_keyboard Enter Activates the focused element
18
+ # @ui_keyboard End Moves focus to last item
19
+ #
20
+ # @ui_related carousel
21
+ #
7
22
  module UI::ScrollAreaBehavior
8
23
  # Returns HTML attributes for the scroll area root element
9
24
  def scroll_area_html_attributes
@@ -2,8 +2,14 @@
2
2
 
3
3
  # UI::ScrollAreaCornerBehavior
4
4
  #
5
- # Shared behavior for ScrollArea corner across ERB, ViewComponent, and Phlex implementations.
6
- # This module provides consistent HTML attribute generation and styling.
5
+ # @ui_component Scroll Area Corner
6
+ # @ui_description Corner - Phlex implementation
7
+ # @ui_category other
8
+ #
9
+ # @ui_anatomy Scroll Area Corner - Intersection element between vertical and horizontal scrollbars. (required)
10
+ #
11
+ # @ui_feature Custom styling with Tailwind classes
12
+ #
7
13
  module UI::ScrollAreaCornerBehavior
8
14
  # Returns HTML attributes for the corner element
9
15
  def scroll_area_corner_html_attributes
@@ -2,8 +2,14 @@
2
2
 
3
3
  # UI::ScrollAreaScrollbarBehavior
4
4
  #
5
- # Shared behavior for ScrollArea scrollbar across ERB, ViewComponent, and Phlex implementations.
6
- # This module provides consistent HTML attribute generation and styling.
5
+ # @ui_component Scroll Area Scrollbar
6
+ # @ui_description Scrollbar - Phlex implementation
7
+ # @ui_category other
8
+ #
9
+ # @ui_anatomy Scroll Area Scrollbar - Custom scrollbar track that contains the draggable thumb. (required)
10
+ #
11
+ # @ui_feature Custom styling with Tailwind classes
12
+ #
7
13
  module UI::ScrollAreaScrollbarBehavior
8
14
  # Returns HTML attributes for the scrollbar element
9
15
  def scroll_area_scrollbar_html_attributes
@@ -2,8 +2,14 @@
2
2
 
3
3
  # UI::ScrollAreaThumbBehavior
4
4
  #
5
- # Shared behavior for ScrollArea thumb across ERB, ViewComponent, and Phlex implementations.
6
- # This module provides consistent HTML attribute generation and styling.
5
+ # @ui_component Scroll Area Thumb
6
+ # @ui_description Thumb - Phlex implementation
7
+ # @ui_category other
8
+ #
9
+ # @ui_anatomy Scroll Area Thumb - Draggable scroll indicator inside the scrollbar. (required)
10
+ #
11
+ # @ui_feature Custom styling with Tailwind classes
12
+ #
7
13
  module UI::ScrollAreaThumbBehavior
8
14
  # Returns HTML attributes for the thumb element
9
15
  def scroll_area_thumb_html_attributes