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,65 +1,64 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # ContentBehavior
4
- #
5
- # Shared behavior for NavigationMenu Content component.
6
- module UI::NavigationMenuContentBehavior
7
- # Returns HTML attributes for the content
8
- def navigation_menu_content_html_attributes
9
- attrs = {
10
- class: navigation_menu_content_classes,
11
- data: navigation_menu_content_data_attributes
12
- }
13
- attrs
14
- end
3
+ # ContentBehavior
4
+ #
5
+ # Shared behavior for NavigationMenu Content component.
6
+ module UI::NavigationMenuContentBehavior
7
+ # Returns HTML attributes for the content
8
+ def navigation_menu_content_html_attributes
9
+ {
10
+ class: navigation_menu_content_classes,
11
+ data: navigation_menu_content_data_attributes
12
+ }
13
+ end
15
14
 
16
- # Returns combined CSS classes for the content
17
- def navigation_menu_content_classes
18
- classes_value = respond_to?(:classes, true) ? classes : @classes
19
- viewport_mode = defined?(@viewport) ? @viewport : true
15
+ # Returns combined CSS classes for the content
16
+ def navigation_menu_content_classes
17
+ classes_value = respond_to?(:classes, true) ? classes : @classes
18
+ viewport_mode = defined?(@viewport) ? @viewport : true
20
19
 
21
- base_classes = if viewport_mode
22
- # Viewport mode - content appears inside viewport
23
- [
24
- "absolute left-0 top-0 w-full p-2 md:w-auto",
25
- # Animation classes
26
- "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out",
27
- "data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out",
28
- "data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52",
29
- "data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52"
30
- ]
31
- else
32
- # Non-viewport mode - content appears directly under trigger
33
- [
34
- "absolute left-0 top-full z-50 mt-1.5 w-max p-2",
35
- "rounded-md border bg-popover text-popover-foreground shadow",
36
- # Visibility controlled by data-state (JS sets this AFTER animation completes for closing)
37
- "data-[state=closed]:invisible data-[state=open]:visible",
38
- "data-[state=closed]:pointer-events-none data-[state=open]:pointer-events-auto",
39
- # Animation classes - use motion for directional animations
40
- # fill-mode-forwards keeps the final animation state (prevents flash back to original position)
41
- "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out fill-mode-forwards",
42
- "data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out",
43
- "data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52",
44
- "data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52"
45
- ]
46
- end
20
+ base_classes = if viewport_mode
21
+ # Viewport mode - content appears inside viewport
22
+ [
23
+ "absolute left-0 top-0 w-full p-2 md:w-auto",
24
+ # Animation classes
25
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out",
26
+ "data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out",
27
+ "data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52",
28
+ "data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52"
29
+ ]
30
+ else
31
+ # Non-viewport mode - content appears directly under trigger
32
+ [
33
+ "absolute left-0 top-full z-50 mt-1.5 w-max p-2",
34
+ "rounded-md border bg-popover text-popover-foreground shadow",
35
+ # Visibility controlled by data-state (JS sets this AFTER animation completes for closing)
36
+ "data-[state=closed]:invisible data-[state=open]:visible",
37
+ "data-[state=closed]:pointer-events-none data-[state=open]:pointer-events-auto",
38
+ # Animation classes - use motion for directional animations
39
+ # fill-mode-forwards keeps the final animation state (prevents flash back to original position)
40
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out fill-mode-forwards",
41
+ "data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out",
42
+ "data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52",
43
+ "data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52"
44
+ ]
45
+ end
47
46
 
48
- TailwindMerge::Merger.new.merge([
49
- *base_classes,
50
- classes_value
51
- ].compact.join(" "))
52
- end
47
+ TailwindMerge::Merger.new.merge([
48
+ *base_classes,
49
+ classes_value
50
+ ].compact.join(" "))
51
+ end
53
52
 
54
- # Returns data attributes
55
- def navigation_menu_content_data_attributes
56
- attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
57
- base_data = {
58
- slot: "navigation-menu-content",
59
- state: "closed",
60
- "ui--navigation-menu-target": "content",
61
- action: "mouseleave->ui--navigation-menu#handleContentLeave"
62
- }
63
- (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
64
- end
65
- end
53
+ # Returns data attributes
54
+ def navigation_menu_content_data_attributes
55
+ attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
56
+ base_data = {
57
+ slot: "navigation-menu-content",
58
+ state: "closed",
59
+ "ui--navigation-menu-target": "content",
60
+ action: "mouseleave->ui--navigation-menu#handleContentLeave"
61
+ }
62
+ (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
63
+ end
64
+ end
@@ -1,38 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # ItemBehavior
4
- #
5
- # Shared behavior for NavigationMenu Item component.
6
- module UI::NavigationMenuItemBehavior
7
- # Returns HTML attributes for the item
8
- def navigation_menu_item_html_attributes
9
- attrs = {
10
- class: navigation_menu_item_classes,
11
- data: navigation_menu_item_data_attributes
12
- }
13
- attrs
14
- end
3
+ # ItemBehavior
4
+ #
5
+ # Shared behavior for NavigationMenu Item component.
6
+ module UI::NavigationMenuItemBehavior
7
+ # Returns HTML attributes for the item
8
+ def navigation_menu_item_html_attributes
9
+ {
10
+ class: navigation_menu_item_classes,
11
+ data: navigation_menu_item_data_attributes
12
+ }
13
+ end
15
14
 
16
- # Returns combined CSS classes for the item
17
- def navigation_menu_item_classes
18
- classes_value = respond_to?(:classes, true) ? classes : @classes
19
- TailwindMerge::Merger.new.merge([
20
- "group/navigation-menu-item relative",
21
- classes_value
22
- ].compact.join(" "))
23
- end
15
+ # Returns combined CSS classes for the item
16
+ def navigation_menu_item_classes
17
+ classes_value = respond_to?(:classes, true) ? classes : @classes
18
+ TailwindMerge::Merger.new.merge([
19
+ "group/navigation-menu-item relative",
20
+ classes_value
21
+ ].compact.join(" "))
22
+ end
24
23
 
25
- # Returns data attributes
26
- def navigation_menu_item_data_attributes
27
- attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
28
- base_data = {
29
- slot: "navigation-menu-item",
30
- "ui--navigation-menu-target": "item"
31
- }
24
+ # Returns data attributes
25
+ def navigation_menu_item_data_attributes
26
+ attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
27
+ base_data = {
28
+ slot: "navigation-menu-item",
29
+ "ui--navigation-menu-target": "item"
30
+ }
32
31
 
33
- # Add value if provided (for controlled state)
34
- base_data[:value] = @value if defined?(@value) && @value
32
+ # Add value if provided (for controlled state)
33
+ base_data[:value] = @value if defined?(@value) && @value
35
34
 
36
- (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
37
- end
38
- end
35
+ (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
36
+ end
37
+ end
@@ -1,68 +1,68 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # LinkBehavior
4
- #
5
- # Shared behavior for NavigationMenu Link component.
6
- # Supports asChild pattern for composition with link_to.
7
- module UI::NavigationMenuLinkBehavior
8
- # Returns HTML attributes for the link
9
- def navigation_menu_link_html_attributes
10
- active_value = defined?(@active) && @active
3
+ # LinkBehavior
4
+ #
5
+ # Shared behavior for NavigationMenu Link component.
6
+ # Supports asChild pattern for composition with link_to.
7
+ module UI::NavigationMenuLinkBehavior
8
+ # Returns HTML attributes for the link
9
+ def navigation_menu_link_html_attributes
10
+ active_value = defined?(@active) && @active
11
11
 
12
- attrs = {
13
- class: navigation_menu_link_classes,
14
- data: navigation_menu_link_data_attributes
15
- }
12
+ attrs = {
13
+ class: navigation_menu_link_classes,
14
+ data: navigation_menu_link_data_attributes
15
+ }
16
16
 
17
- # Add href if provided and not using asChild
18
- attrs[:href] = @href if defined?(@href) && @href
17
+ # Add href if provided and not using asChild
18
+ attrs[:href] = @href if defined?(@href) && @href
19
19
 
20
- # Add aria-current for active links
21
- attrs[:"aria-current"] = "page" if active_value
20
+ # Add aria-current for active links
21
+ attrs[:"aria-current"] = "page" if active_value
22
22
 
23
- attrs
24
- end
23
+ attrs
24
+ end
25
25
 
26
- # Returns combined CSS classes for the link
27
- def navigation_menu_link_classes
28
- classes_value = respond_to?(:classes, true) ? classes : @classes
29
- TailwindMerge::Merger.new.merge([
30
- # Base styles
31
- "flex flex-col gap-1 rounded-sm p-2 text-sm",
32
- # Interaction states
33
- "outline-hidden transition-colors select-none",
34
- "hover:bg-accent hover:text-accent-foreground",
35
- "focus:bg-accent focus:text-accent-foreground",
36
- "focus-visible:ring-[3px] focus-visible:ring-ring/50",
37
- # Icon styling
38
- "[&_svg:not([class*='text-'])]:text-muted-foreground",
39
- classes_value
40
- ].compact.join(" "))
41
- end
26
+ # Returns combined CSS classes for the link
27
+ def navigation_menu_link_classes
28
+ classes_value = respond_to?(:classes, true) ? classes : @classes
29
+ TailwindMerge::Merger.new.merge([
30
+ # Base styles
31
+ "flex flex-col gap-1 rounded-sm p-2 text-sm",
32
+ # Interaction states
33
+ "outline-hidden transition-colors select-none",
34
+ "hover:bg-accent hover:text-accent-foreground",
35
+ "focus:bg-accent focus:text-accent-foreground",
36
+ "focus-visible:ring-[3px] focus-visible:ring-ring/50",
37
+ # Icon styling
38
+ "[&_svg:not([class*='text-'])]:text-muted-foreground",
39
+ classes_value
40
+ ].compact.join(" "))
41
+ end
42
42
 
43
- # Returns data attributes
44
- def navigation_menu_link_data_attributes
45
- attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
46
- active_value = defined?(@active) && @active
43
+ # Returns data attributes
44
+ def navigation_menu_link_data_attributes
45
+ attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
46
+ active_value = defined?(@active) && @active
47
47
 
48
- base_data = {
49
- slot: "navigation-menu-link",
50
- active: active_value ? "true" : nil
51
- }.compact
48
+ base_data = {
49
+ slot: "navigation-menu-link",
50
+ active: active_value ? "true" : nil
51
+ }.compact
52
52
 
53
- (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
54
- end
53
+ (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
54
+ end
55
55
 
56
- # Returns CSS classes that mimic the trigger style (for direct links without dropdown)
57
- def navigation_menu_link_trigger_style_classes
58
- [
59
- "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center gap-1",
60
- "rounded-md bg-background px-4 py-2 text-sm font-medium",
61
- "outline-hidden transition-colors",
62
- "hover:bg-accent hover:text-accent-foreground",
63
- "focus:bg-accent focus:text-accent-foreground",
64
- "focus-visible:ring-[3px] focus-visible:ring-ring/50",
65
- "disabled:pointer-events-none disabled:opacity-50"
66
- ].join(" ")
67
- end
68
- end
56
+ # Returns CSS classes that mimic the trigger style (for direct links without dropdown)
57
+ def navigation_menu_link_trigger_style_classes
58
+ [
59
+ "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center gap-1",
60
+ "rounded-md bg-background px-4 py-2 text-sm font-medium",
61
+ "outline-hidden transition-colors",
62
+ "hover:bg-accent hover:text-accent-foreground",
63
+ "focus:bg-accent focus:text-accent-foreground",
64
+ "focus-visible:ring-[3px] focus-visible:ring-ring/50",
65
+ "disabled:pointer-events-none disabled:opacity-50"
66
+ ].join(" ")
67
+ end
68
+ end
@@ -1,33 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # ListBehavior
4
- #
5
- # Shared behavior for NavigationMenu List component.
6
- module UI::NavigationMenuListBehavior
7
- # Returns HTML attributes for the list
8
- def navigation_menu_list_html_attributes
9
- attrs = {
10
- class: navigation_menu_list_classes,
11
- data: navigation_menu_list_data_attributes
12
- }
13
- attrs
14
- end
3
+ # ListBehavior
4
+ #
5
+ # Shared behavior for NavigationMenu List component.
6
+ module UI::NavigationMenuListBehavior
7
+ # Returns HTML attributes for the list
8
+ def navigation_menu_list_html_attributes
9
+ {
10
+ class: navigation_menu_list_classes,
11
+ data: navigation_menu_list_data_attributes
12
+ }
13
+ end
15
14
 
16
- # Returns combined CSS classes for the list
17
- def navigation_menu_list_classes
18
- classes_value = respond_to?(:classes, true) ? classes : @classes
19
- TailwindMerge::Merger.new.merge([
20
- "group/navigation-menu-list flex flex-1 list-none items-center justify-center gap-1",
21
- classes_value
22
- ].compact.join(" "))
23
- end
15
+ # Returns combined CSS classes for the list
16
+ def navigation_menu_list_classes
17
+ classes_value = respond_to?(:classes, true) ? classes : @classes
18
+ TailwindMerge::Merger.new.merge([
19
+ "group/navigation-menu-list flex flex-1 list-none items-center justify-center gap-1",
20
+ classes_value
21
+ ].compact.join(" "))
22
+ end
24
23
 
25
- # Returns data attributes
26
- def navigation_menu_list_data_attributes
27
- attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
28
- base_data = {
29
- slot: "navigation-menu-list"
30
- }
31
- (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
32
- end
33
- end
24
+ # Returns data attributes
25
+ def navigation_menu_list_data_attributes
26
+ attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
27
+ base_data = {
28
+ slot: "navigation-menu-list"
29
+ }
30
+ (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
31
+ end
32
+ end
@@ -1,57 +1,56 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # TriggerBehavior
4
- #
5
- # Shared behavior for NavigationMenu Trigger component.
6
- module UI::NavigationMenuTriggerBehavior
7
- # Returns HTML attributes for the trigger
8
- def navigation_menu_trigger_html_attributes
9
- first_value = defined?(@first) && @first
3
+ # TriggerBehavior
4
+ #
5
+ # Shared behavior for NavigationMenu Trigger component.
6
+ module UI::NavigationMenuTriggerBehavior
7
+ # Returns HTML attributes for the trigger
8
+ def navigation_menu_trigger_html_attributes
9
+ first_value = defined?(@first) && @first
10
10
 
11
- attrs = {
12
- class: navigation_menu_trigger_classes,
13
- data: navigation_menu_trigger_data_attributes,
14
- type: "button",
15
- "aria-expanded": "false",
16
- tabindex: first_value ? "0" : "-1"
17
- }
18
- attrs
19
- end
11
+ {
12
+ class: navigation_menu_trigger_classes,
13
+ data: navigation_menu_trigger_data_attributes,
14
+ type: "button",
15
+ "aria-expanded": "false",
16
+ tabindex: first_value ? "0" : "-1"
17
+ }
18
+ end
20
19
 
21
- # Returns combined CSS classes for the trigger
22
- def navigation_menu_trigger_classes
23
- classes_value = respond_to?(:classes, true) ? classes : @classes
24
- TailwindMerge::Merger.new.merge([
25
- # Base styles
26
- "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center gap-1",
27
- "rounded-md bg-background px-4 py-2 text-sm font-medium",
28
- # Focus and hover states
29
- "outline-hidden transition-colors",
30
- "hover:bg-accent hover:text-accent-foreground",
31
- "focus:bg-accent focus:text-accent-foreground",
32
- "focus-visible:ring-[3px] focus-visible:ring-ring/50",
33
- # Disabled state
34
- "disabled:pointer-events-none disabled:opacity-50",
35
- # Open state
36
- "data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground",
37
- classes_value
38
- ].compact.join(" "))
39
- end
20
+ # Returns combined CSS classes for the trigger
21
+ def navigation_menu_trigger_classes
22
+ classes_value = respond_to?(:classes, true) ? classes : @classes
23
+ TailwindMerge::Merger.new.merge([
24
+ # Base styles
25
+ "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center gap-1",
26
+ "rounded-md bg-background px-4 py-2 text-sm font-medium",
27
+ # Focus and hover states
28
+ "outline-hidden transition-colors",
29
+ "hover:bg-accent hover:text-accent-foreground",
30
+ "focus:bg-accent focus:text-accent-foreground",
31
+ "focus-visible:ring-[3px] focus-visible:ring-ring/50",
32
+ # Disabled state
33
+ "disabled:pointer-events-none disabled:opacity-50",
34
+ # Open state
35
+ "data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground",
36
+ classes_value
37
+ ].compact.join(" "))
38
+ end
40
39
 
41
- # Returns data attributes
42
- def navigation_menu_trigger_data_attributes
43
- attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
44
- base_data = {
45
- slot: "navigation-menu-trigger",
46
- state: "closed",
47
- "ui--navigation-menu-target": "trigger",
48
- action: "click->ui--navigation-menu#toggle mouseenter->ui--navigation-menu#handleTriggerHover mouseleave->ui--navigation-menu#handleTriggerLeave"
49
- }
50
- (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
51
- end
40
+ # Returns data attributes
41
+ def navigation_menu_trigger_data_attributes
42
+ attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
43
+ base_data = {
44
+ slot: "navigation-menu-trigger",
45
+ state: "closed",
46
+ "ui--navigation-menu-target": "trigger",
47
+ action: "click->ui--navigation-menu#toggle mouseenter->ui--navigation-menu#handleTriggerHover mouseleave->ui--navigation-menu#handleTriggerLeave"
48
+ }
49
+ (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
50
+ end
52
51
 
53
- # Returns CSS classes for the chevron icon
54
- def navigation_menu_trigger_chevron_classes
55
- "size-3 shrink-0 transition-transform duration-200 group-data-[state=open]/navigation-menu-trigger:rotate-180"
56
- end
57
- end
52
+ # Returns CSS classes for the chevron icon
53
+ def navigation_menu_trigger_chevron_classes
54
+ "size-3 shrink-0 transition-transform duration-200 group-data-[state=open]/navigation-menu-trigger:rotate-180"
55
+ end
56
+ end
@@ -1,61 +1,60 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # ViewportBehavior
4
- #
5
- # Shared behavior for NavigationMenu Viewport component.
6
- module UI::NavigationMenuViewportBehavior
7
- # Returns HTML attributes for the viewport wrapper
8
- def navigation_menu_viewport_wrapper_html_attributes
9
- {
10
- class: navigation_menu_viewport_wrapper_classes,
11
- data: { slot: "navigation-menu-viewport-wrapper" }
12
- }
13
- end
3
+ # ViewportBehavior
4
+ #
5
+ # Shared behavior for NavigationMenu Viewport component.
6
+ module UI::NavigationMenuViewportBehavior
7
+ # Returns HTML attributes for the viewport wrapper
8
+ def navigation_menu_viewport_wrapper_html_attributes
9
+ {
10
+ class: navigation_menu_viewport_wrapper_classes,
11
+ data: {slot: "navigation-menu-viewport-wrapper"}
12
+ }
13
+ end
14
14
 
15
- # Returns CSS classes for the viewport wrapper
16
- def navigation_menu_viewport_wrapper_classes
17
- "absolute left-0 top-full flex justify-center perspective-[2000px]"
18
- end
15
+ # Returns CSS classes for the viewport wrapper
16
+ def navigation_menu_viewport_wrapper_classes
17
+ "absolute left-0 top-full flex justify-center perspective-[2000px]"
18
+ end
19
19
 
20
- # Returns HTML attributes for the viewport
21
- def navigation_menu_viewport_html_attributes
22
- attrs = {
23
- class: navigation_menu_viewport_classes,
24
- data: navigation_menu_viewport_data_attributes
25
- }
26
- attrs
27
- end
20
+ # Returns HTML attributes for the viewport
21
+ def navigation_menu_viewport_html_attributes
22
+ {
23
+ class: navigation_menu_viewport_classes,
24
+ data: navigation_menu_viewport_data_attributes
25
+ }
26
+ end
28
27
 
29
- # Returns combined CSS classes for the viewport
30
- def navigation_menu_viewport_classes
31
- classes_value = respond_to?(:classes, true) ? classes : @classes
32
- TailwindMerge::Merger.new.merge([
33
- # Base styles
34
- "origin-top-center bg-popover text-popover-foreground",
35
- "relative mt-1.5 overflow-hidden rounded-md border shadow",
36
- # Dynamic sizing via CSS variables
37
- "h-[var(--ui-navigation-menu-viewport-height)]",
38
- "w-full md:w-[var(--ui-navigation-menu-viewport-width)]",
39
- # State visibility
40
- "data-[state=closed]:invisible data-[state=open]:visible",
41
- "data-[state=closed]:pointer-events-none data-[state=open]:pointer-events-auto",
42
- # Animation
43
- "transition-[width,height] duration-200",
44
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
45
- "data-[state=closed]:fade-out data-[state=open]:fade-in",
46
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90",
47
- classes_value
48
- ].compact.join(" "))
49
- end
28
+ # Returns combined CSS classes for the viewport
29
+ def navigation_menu_viewport_classes
30
+ classes_value = respond_to?(:classes, true) ? classes : @classes
31
+ TailwindMerge::Merger.new.merge([
32
+ # Base styles
33
+ "origin-top-center bg-popover text-popover-foreground",
34
+ "relative mt-1.5 overflow-hidden rounded-md border shadow",
35
+ # Dynamic sizing via CSS variables
36
+ "h-[var(--ui-navigation-menu-viewport-height)]",
37
+ "w-full md:w-[var(--ui-navigation-menu-viewport-width)]",
38
+ # State visibility
39
+ "data-[state=closed]:invisible data-[state=open]:visible",
40
+ "data-[state=closed]:pointer-events-none data-[state=open]:pointer-events-auto",
41
+ # Animation
42
+ "transition-[width,height] duration-200",
43
+ "data-[state=open]:animate-in data-[state=closed]:animate-out",
44
+ "data-[state=closed]:fade-out data-[state=open]:fade-in",
45
+ "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90",
46
+ classes_value
47
+ ].compact.join(" "))
48
+ end
50
49
 
51
- # Returns data attributes
52
- def navigation_menu_viewport_data_attributes
53
- attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
54
- base_data = {
55
- slot: "navigation-menu-viewport",
56
- state: "closed",
57
- "ui--navigation-menu-target": "viewport"
58
- }
59
- (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
60
- end
61
- end
50
+ # Returns data attributes
51
+ def navigation_menu_viewport_data_attributes
52
+ attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
53
+ base_data = {
54
+ slot: "navigation-menu-viewport",
55
+ state: "closed",
56
+ "ui--navigation-menu-target": "viewport"
57
+ }
58
+ (attributes_value&.fetch(:data, {}) || {}).merge(base_data)
59
+ end
60
+ end