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
@@ -2,38 +2,38 @@
2
2
 
3
3
  require "tailwind_merge"
4
4
 
5
- # Shared behavior for AlertDialog Trigger component
6
- # Handles classes and Stimulus actions
7
- module UI::AlertDialogTriggerBehavior
8
- # Base CSS classes for alert dialog trigger wrapper
9
- def alert_dialog_trigger_base_classes
10
- "inline-flex"
11
- end
5
+ # Shared behavior for AlertDialog Trigger component
6
+ # Handles classes and Stimulus actions
7
+ module UI::AlertDialogTriggerBehavior
8
+ # Base CSS classes for alert dialog trigger wrapper
9
+ def alert_dialog_trigger_base_classes
10
+ "inline-flex"
11
+ end
12
12
 
13
- # Merge base classes with custom classes using TailwindMerge
14
- def alert_dialog_trigger_classes
15
- TailwindMerge::Merger.new.merge([alert_dialog_trigger_base_classes, @classes].compact.join(" "))
16
- end
13
+ # Merge base classes with custom classes using TailwindMerge
14
+ def alert_dialog_trigger_classes
15
+ TailwindMerge::Merger.new.merge([alert_dialog_trigger_base_classes, @classes].compact.join(" "))
16
+ end
17
17
 
18
- # Data attributes for Stimulus action
19
- def alert_dialog_trigger_data_attributes
20
- {
21
- action: "click->ui--alert-dialog#open"
22
- }
23
- end
18
+ # Data attributes for Stimulus action
19
+ def alert_dialog_trigger_data_attributes
20
+ {
21
+ action: "click->ui--alert-dialog#open"
22
+ }
23
+ end
24
24
 
25
- # Merge user-provided data attributes
26
- def merged_alert_dialog_trigger_data_attributes
27
- user_data = @attributes&.fetch(:data, {}) || {}
28
- user_data.merge(alert_dialog_trigger_data_attributes)
29
- end
25
+ # Merge user-provided data attributes
26
+ def merged_alert_dialog_trigger_data_attributes
27
+ user_data = @attributes&.fetch(:data, {}) || {}
28
+ user_data.merge(alert_dialog_trigger_data_attributes)
29
+ end
30
30
 
31
- # Build complete HTML attributes hash for alert dialog trigger
32
- def alert_dialog_trigger_html_attributes
33
- base_attrs = @attributes&.except(:data) || {}
34
- base_attrs.merge(
35
- class: alert_dialog_trigger_classes,
36
- data: merged_alert_dialog_trigger_data_attributes
37
- )
38
- end
39
- end
31
+ # Build complete HTML attributes hash for alert dialog trigger
32
+ def alert_dialog_trigger_html_attributes
33
+ base_attrs = @attributes&.except(:data) || {}
34
+ base_attrs.merge(
35
+ class: alert_dialog_trigger_classes,
36
+ data: merged_alert_dialog_trigger_data_attributes
37
+ )
38
+ end
39
+ end
@@ -2,31 +2,31 @@
2
2
 
3
3
  require "tailwind_merge"
4
4
 
5
- # Shared behavior for Alert Title component
6
- # Handles title styling
7
- module UI::AlertTitleBehavior
8
- # Base CSS classes for alert title
9
- def alert_title_base_classes
10
- "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight"
11
- end
5
+ # Shared behavior for Alert Title component
6
+ # Handles title styling
7
+ module UI::AlertTitleBehavior
8
+ # Base CSS classes for alert title
9
+ def alert_title_base_classes
10
+ "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight"
11
+ end
12
12
 
13
- # Merge base classes with custom classes
14
- def alert_title_classes
15
- TailwindMerge::Merger.new.merge([alert_title_base_classes, @classes].compact.join(" "))
16
- end
13
+ # Merge base classes with custom classes
14
+ def alert_title_classes
15
+ TailwindMerge::Merger.new.merge([alert_title_base_classes, @classes].compact.join(" "))
16
+ end
17
17
 
18
- # Build complete HTML attributes hash for alert title
19
- def alert_title_html_attributes
20
- base_attrs = @attributes || {}
21
- base_attrs.merge(
22
- class: alert_title_classes,
23
- "data-slot": "alert-title"
24
- )
25
- end
18
+ # Build complete HTML attributes hash for alert title
19
+ def alert_title_html_attributes
20
+ base_attrs = @attributes || {}
21
+ base_attrs.merge(
22
+ class: alert_title_classes,
23
+ "data-slot": "alert-title"
24
+ )
25
+ end
26
26
 
27
- # Renders the alert title HTML (for ERB partials)
28
- def render_alert_title(&content_block)
29
- all_attributes = alert_title_html_attributes.deep_merge(@attributes || {})
30
- content_tag(:div, **all_attributes, &content_block)
31
- end
32
- end
27
+ # Renders the alert title HTML (for ERB partials)
28
+ def render_alert_title(&content_block)
29
+ all_attributes = alert_title_html_attributes.deep_merge(@attributes || {})
30
+ content_tag(:div, **all_attributes, &content_block)
31
+ end
32
+ end
@@ -2,46 +2,54 @@
2
2
 
3
3
  require "tailwind_merge"
4
4
 
5
- # Shared behavior for AspectRatio component
6
- # Handles aspect ratio styling
7
- module UI::AspectRatioBehavior
8
- # Default aspect ratio is 1:1 (square)
9
- DEFAULT_RATIO = 1.0
5
+ # UI::AspectRatioBehavior
6
+ #
7
+ # @ui_component Aspect Ratio
8
+ # @ui_description AspectRatio - Phlex implementation
9
+ # @ui_category layout
10
+ #
11
+ # @ui_anatomy Aspect Ratio - Displays content within a desired aspect ratio. (required)
12
+ #
13
+ # @ui_feature Custom styling with Tailwind classes
14
+ #
15
+ module UI::AspectRatioBehavior
16
+ # Default aspect ratio is 1:1 (square)
17
+ DEFAULT_RATIO = 1.0
10
18
 
11
- # Calculate padding-bottom percentage for aspect ratio
12
- # Formula: (height / width) * 100
13
- def aspect_ratio_padding
14
- ratio_value = @ratio || DEFAULT_RATIO
15
- percentage = (1.0 / ratio_value) * 100
16
- "#{percentage}%"
17
- end
19
+ # Calculate padding-bottom percentage for aspect ratio
20
+ # Formula: (height / width) * 100
21
+ def aspect_ratio_padding
22
+ ratio_value = @ratio || DEFAULT_RATIO
23
+ percentage = (1.0 / ratio_value) * 100
24
+ "#{percentage}%"
25
+ end
18
26
 
19
- # Merge base classes with custom classes
20
- def aspect_ratio_classes
21
- TailwindMerge::Merger.new.merge([@classes].compact.join(" "))
22
- end
27
+ # Merge base classes with custom classes
28
+ def aspect_ratio_classes
29
+ TailwindMerge::Merger.new.merge([@classes].compact.join(" "))
30
+ end
23
31
 
24
- # Build complete HTML attributes hash for aspect ratio container
25
- def aspect_ratio_html_attributes
26
- base_attrs = @attributes || {}
27
- base_attrs.merge(
28
- class: aspect_ratio_classes,
29
- "data-slot": "aspect-ratio",
30
- style: "position: relative; width: 100%;"
31
- )
32
- end
32
+ # Build complete HTML attributes hash for aspect ratio container
33
+ def aspect_ratio_html_attributes
34
+ base_attrs = @attributes || {}
35
+ base_attrs.merge(
36
+ class: aspect_ratio_classes,
37
+ "data-slot": "aspect-ratio",
38
+ style: "position: relative; width: 100%;"
39
+ )
40
+ end
33
41
 
34
- # Build attributes for the padding element
35
- def aspect_ratio_padding_attributes
36
- {
37
- style: "padding-bottom: #{aspect_ratio_padding};"
38
- }
39
- end
42
+ # Build attributes for the padding element
43
+ def aspect_ratio_padding_attributes
44
+ {
45
+ style: "padding-bottom: #{aspect_ratio_padding};"
46
+ }
47
+ end
40
48
 
41
- # Build attributes for the content wrapper
42
- def aspect_ratio_content_attributes
43
- {
44
- style: "position: absolute; top: 0; right: 0; bottom: 0; left: 0;"
45
- }
46
- end
47
- end
49
+ # Build attributes for the content wrapper
50
+ def aspect_ratio_content_attributes
51
+ {
52
+ style: "position: absolute; top: 0; right: 0; bottom: 0; left: 0;"
53
+ }
54
+ end
55
+ end
@@ -1,43 +1,50 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # AvatarBehavior
4
- #
5
- # Shared behavior for Avatar component across ERB, ViewComponent, and Phlex implementations.
6
- # This module provides consistent styling and HTML attribute generation.
7
- #
8
- # Based on shadcn/ui Avatar: https://ui.shadcn.com/docs/components/avatar
9
- # Based on Radix UI Avatar: https://www.radix-ui.com/primitives/docs/components/avatar
10
- module UI::AvatarBehavior
11
- # Returns HTML attributes for the avatar element
12
- def avatar_html_attributes
13
- {
14
- class: avatar_classes,
15
- data: avatar_data_attributes
16
- }
17
- end
3
+ # UI::AvatarBehavior
4
+ #
5
+ # @ui_component Avatar
6
+ # @ui_description Avatar - Phlex implementation
7
+ # @ui_category data-display
8
+ #
9
+ # @ui_anatomy Avatar - Displays an image element with a fallback for representing users. (required)
10
+ # @ui_anatomy Fallback - Displays fallback content when the image hasn't loaded or fails to load.
11
+ # @ui_anatomy Image - Displays the avatar image. Only renders when it has loaded successfully.
12
+ #
13
+ # @ui_feature Custom styling with Tailwind classes
14
+ #
15
+ # @ui_related badge
16
+ #
17
+ module UI::AvatarBehavior
18
+ # Returns HTML attributes for the avatar element
19
+ def avatar_html_attributes
20
+ {
21
+ class: avatar_classes,
22
+ data: avatar_data_attributes
23
+ }
24
+ end
18
25
 
19
- # Returns combined CSS classes for the avatar
20
- def avatar_classes
21
- classes_value = respond_to?(:classes, true) ? classes : @classes
22
- TailwindMerge::Merger.new.merge([
23
- avatar_base_classes,
24
- classes_value
25
- ].compact.join(" "))
26
- end
26
+ # Returns combined CSS classes for the avatar
27
+ def avatar_classes
28
+ classes_value = respond_to?(:classes, true) ? classes : @classes
29
+ TailwindMerge::Merger.new.merge([
30
+ avatar_base_classes,
31
+ classes_value
32
+ ].compact.join(" "))
33
+ end
27
34
 
28
- # Returns data attributes for Stimulus controller
29
- def avatar_data_attributes
30
- {
31
- controller: "ui--avatar",
32
- slot: "avatar"
33
- }
34
- end
35
+ # Returns data attributes for Stimulus controller
36
+ def avatar_data_attributes
37
+ {
38
+ controller: "ui--avatar",
39
+ slot: "avatar"
40
+ }
41
+ end
35
42
 
36
- private
43
+ private
37
44
 
38
- # Base classes applied to all avatars
39
- # Matches shadcn/ui v4: "relative flex size-8 shrink-0 overflow-hidden rounded-full"
40
- def avatar_base_classes
41
- "relative flex size-8 shrink-0 overflow-hidden rounded-full"
42
- end
43
- end
45
+ # Base classes applied to all avatars
46
+ # Matches shadcn/ui v4: "relative flex size-8 shrink-0 overflow-hidden rounded-full"
47
+ def avatar_base_classes
48
+ "relative flex size-8 shrink-0 overflow-hidden rounded-full"
49
+ end
50
+ end
@@ -1,43 +1,43 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # AvatarFallbackBehavior
4
- #
5
- # Shared behavior for AvatarFallback component across ERB, ViewComponent, and Phlex implementations.
6
- # This module provides consistent styling and HTML attribute generation for avatar fallbacks.
7
- #
8
- # Based on shadcn/ui Avatar: https://ui.shadcn.com/docs/components/avatar
9
- # Based on Radix UI Avatar: https://www.radix-ui.com/primitives/docs/components/avatar
10
- module UI::AvatarFallbackBehavior
11
- # Returns HTML attributes for the avatar fallback element
12
- def avatar_fallback_html_attributes
13
- {
14
- class: avatar_fallback_classes,
15
- data: avatar_fallback_data_attributes
16
- }
17
- end
3
+ # AvatarFallbackBehavior
4
+ #
5
+ # Shared behavior for AvatarFallback component across ERB, ViewComponent, and Phlex implementations.
6
+ # This module provides consistent styling and HTML attribute generation for avatar fallbacks.
7
+ #
8
+ # Based on shadcn/ui Avatar: https://ui.shadcn.com/docs/components/avatar
9
+ # Based on Radix UI Avatar: https://www.radix-ui.com/primitives/docs/components/avatar
10
+ module UI::AvatarFallbackBehavior
11
+ # Returns HTML attributes for the avatar fallback element
12
+ def avatar_fallback_html_attributes
13
+ {
14
+ class: avatar_fallback_classes,
15
+ data: avatar_fallback_data_attributes
16
+ }
17
+ end
18
18
 
19
- # Returns combined CSS classes for the avatar fallback
20
- def avatar_fallback_classes
21
- classes_value = respond_to?(:classes, true) ? classes : @classes
22
- TailwindMerge::Merger.new.merge([
23
- avatar_fallback_base_classes,
24
- classes_value
25
- ].compact.join(" "))
26
- end
19
+ # Returns combined CSS classes for the avatar fallback
20
+ def avatar_fallback_classes
21
+ classes_value = respond_to?(:classes, true) ? classes : @classes
22
+ TailwindMerge::Merger.new.merge([
23
+ avatar_fallback_base_classes,
24
+ classes_value
25
+ ].compact.join(" "))
26
+ end
27
27
 
28
- # Returns data attributes for Stimulus target
29
- def avatar_fallback_data_attributes
30
- {
31
- "ui--avatar_target": "fallback",
32
- slot: "avatar-fallback"
33
- }
34
- end
28
+ # Returns data attributes for Stimulus target
29
+ def avatar_fallback_data_attributes
30
+ {
31
+ "ui--avatar_target": "fallback",
32
+ slot: "avatar-fallback"
33
+ }
34
+ end
35
35
 
36
- private
36
+ private
37
37
 
38
- # Base classes applied to all avatar fallbacks
39
- # Matches shadcn/ui v4: "bg-muted flex size-full items-center justify-center rounded-full"
40
- def avatar_fallback_base_classes
41
- "bg-muted flex size-full items-center justify-center rounded-full"
42
- end
43
- end
38
+ # Base classes applied to all avatar fallbacks
39
+ # Matches shadcn/ui v4: "bg-muted flex size-full items-center justify-center rounded-full"
40
+ def avatar_fallback_base_classes
41
+ "bg-muted flex size-full items-center justify-center rounded-full"
42
+ end
43
+ end
@@ -1,46 +1,46 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # AvatarImageBehavior
4
- #
5
- # Shared behavior for AvatarImage component across ERB, ViewComponent, and Phlex implementations.
6
- # This module provides consistent styling and HTML attribute generation for avatar images.
7
- #
8
- # Based on shadcn/ui Avatar: https://ui.shadcn.com/docs/components/avatar
9
- # Based on Radix UI Avatar: https://www.radix-ui.com/primitives/docs/components/avatar
10
- module UI::AvatarImageBehavior
11
- # Returns HTML attributes for the avatar image element
12
- def avatar_image_html_attributes
13
- {
14
- src: @src,
15
- alt: @alt,
16
- class: avatar_image_classes,
17
- data: avatar_image_data_attributes
18
- }
19
- end
3
+ # AvatarImageBehavior
4
+ #
5
+ # Shared behavior for AvatarImage component across ERB, ViewComponent, and Phlex implementations.
6
+ # This module provides consistent styling and HTML attribute generation for avatar images.
7
+ #
8
+ # Based on shadcn/ui Avatar: https://ui.shadcn.com/docs/components/avatar
9
+ # Based on Radix UI Avatar: https://www.radix-ui.com/primitives/docs/components/avatar
10
+ module UI::AvatarImageBehavior
11
+ # Returns HTML attributes for the avatar image element
12
+ def avatar_image_html_attributes
13
+ {
14
+ src: @src,
15
+ alt: @alt,
16
+ class: avatar_image_classes,
17
+ data: avatar_image_data_attributes
18
+ }
19
+ end
20
20
 
21
- # Returns combined CSS classes for the avatar image
22
- def avatar_image_classes
23
- classes_value = respond_to?(:classes, true) ? classes : @classes
24
- TailwindMerge::Merger.new.merge([
25
- avatar_image_base_classes,
26
- classes_value
27
- ].compact.join(" "))
28
- end
21
+ # Returns combined CSS classes for the avatar image
22
+ def avatar_image_classes
23
+ classes_value = respond_to?(:classes, true) ? classes : @classes
24
+ TailwindMerge::Merger.new.merge([
25
+ avatar_image_base_classes,
26
+ classes_value
27
+ ].compact.join(" "))
28
+ end
29
29
 
30
- # Returns data attributes for Stimulus target
31
- def avatar_image_data_attributes
32
- {
33
- "ui--avatar_target": "image",
34
- slot: "avatar-image"
35
- }
36
- end
30
+ # Returns data attributes for Stimulus target
31
+ def avatar_image_data_attributes
32
+ {
33
+ "ui--avatar_target": "image",
34
+ slot: "avatar-image"
35
+ }
36
+ end
37
37
 
38
- private
38
+ private
39
39
 
40
- # Base classes applied to all avatar images
41
- # Matches shadcn/ui v4: "aspect-square size-full"
42
- # Start hidden until image loads successfully
43
- def avatar_image_base_classes
44
- "aspect-square size-full hidden"
45
- end
46
- end
40
+ # Base classes applied to all avatar images
41
+ # Matches shadcn/ui v4: "aspect-square size-full"
42
+ # Start hidden until image loads successfully
43
+ def avatar_image_base_classes
44
+ "aspect-square size-full hidden"
45
+ end
46
+ end
@@ -1,50 +1,57 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # BadgeBehavior
4
- #
5
- # Shared behavior for Badge component across ERB, ViewComponent, and Phlex implementations.
6
- # This module provides consistent variant styling and HTML attribute generation.
7
- #
8
- # Based on shadcn/ui Badge: https://ui.shadcn.com/docs/components/badge
9
- module UI::BadgeBehavior
10
- # Returns HTML attributes for the badge element
11
- def badge_html_attributes
12
- {
13
- class: badge_classes,
14
- data: { slot: "badge" }
15
- }
16
- end
3
+ # UI::BadgeBehavior
4
+ #
5
+ # @ui_component Badge
6
+ # @ui_description Badge - Phlex implementation
7
+ # @ui_category data-display
8
+ #
9
+ # @ui_anatomy Badge - Displays a badge or a component that looks like a badge. (required)
10
+ #
11
+ # @ui_feature Custom styling with Tailwind classes
12
+ # @ui_feature ARIA attributes for accessibility
13
+ #
14
+ # @ui_related avatar
15
+ #
16
+ module UI::BadgeBehavior
17
+ # Returns HTML attributes for the badge element
18
+ def badge_html_attributes
19
+ {
20
+ class: badge_classes,
21
+ data: {slot: "badge"}
22
+ }
23
+ end
17
24
 
18
- # Returns combined CSS classes for the badge
19
- def badge_classes
20
- classes_value = respond_to?(:classes, true) ? classes : @classes
21
- TailwindMerge::Merger.new.merge([
22
- badge_base_classes,
23
- badge_variant_classes,
24
- classes_value
25
- ].compact.join(" "))
26
- end
25
+ # Returns combined CSS classes for the badge
26
+ def badge_classes
27
+ classes_value = respond_to?(:classes, true) ? classes : @classes
28
+ TailwindMerge::Merger.new.merge([
29
+ badge_base_classes,
30
+ badge_variant_classes,
31
+ classes_value
32
+ ].compact.join(" "))
33
+ end
27
34
 
28
- private
35
+ private
29
36
 
30
- # Base classes applied to all badges
31
- # Matches shadcn/ui v4 exactly
32
- def badge_base_classes
33
- "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden"
34
- end
37
+ # Base classes applied to all badges
38
+ # Matches shadcn/ui v4 exactly
39
+ def badge_base_classes
40
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden"
41
+ end
35
42
 
36
- # Variant-specific classes based on @variant
37
- # Matches shadcn/ui v4 variants exactly
38
- def badge_variant_classes
39
- case @variant.to_s
40
- when "secondary"
41
- "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90"
42
- when "destructive"
43
- "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60"
44
- when "outline"
45
- "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
46
- else # default
47
- "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90"
48
- end
49
- end
43
+ # Variant-specific classes based on @variant
44
+ # Matches shadcn/ui v4 variants exactly
45
+ def badge_variant_classes
46
+ case @variant.to_s
47
+ when "secondary"
48
+ "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90"
49
+ when "destructive"
50
+ "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60"
51
+ when "outline"
52
+ "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
53
+ else # default
54
+ "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90"
50
55
  end
56
+ end
57
+ end
@@ -2,22 +2,30 @@
2
2
 
3
3
  require "tailwind_merge"
4
4
 
5
- # Shared behavior for Blockquote component
6
- module UI::BlockquoteBehavior
7
- # Base CSS classes for Blockquote
8
- def blockquote_base_classes
9
- "mt-6 border-l-2 pl-6 italic"
10
- end
5
+ # UI::BlockquoteBehavior
6
+ #
7
+ # @ui_component Blockquote
8
+ # @ui_category typography
9
+ #
10
+ # @ui_anatomy Blockquote - Blockquote component part (required)
11
+ #
12
+ # @ui_feature Custom styling with Tailwind classes
13
+ #
14
+ module UI::BlockquoteBehavior
15
+ # Base CSS classes for Blockquote
16
+ def blockquote_base_classes
17
+ "mt-6 border-l-2 pl-6 italic"
18
+ end
11
19
 
12
- # Merge base classes with custom classes using TailwindMerge
13
- def blockquote_classes
14
- TailwindMerge::Merger.new.merge([blockquote_base_classes, @classes].compact.join(" "))
15
- end
20
+ # Merge base classes with custom classes using TailwindMerge
21
+ def blockquote_classes
22
+ TailwindMerge::Merger.new.merge([blockquote_base_classes, @classes].compact.join(" "))
23
+ end
16
24
 
17
- # Build complete HTML attributes hash
18
- def blockquote_html_attributes
19
- {
20
- class: blockquote_classes
21
- }
22
- end
23
- end
25
+ # Build complete HTML attributes hash
26
+ def blockquote_html_attributes
27
+ {
28
+ class: blockquote_classes
29
+ }
30
+ end
31
+ end