fernandes-ui 0.1.1 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -0
- data/app/assets/javascripts/ui.esm.js +15 -9
- data/app/assets/javascripts/ui.js +15 -9
- data/app/behaviors/ui/accordion_behavior.rb +50 -26
- data/app/behaviors/ui/accordion_content_behavior.rb +58 -58
- data/app/behaviors/ui/accordion_item_behavior.rb +38 -38
- data/app/behaviors/ui/accordion_trigger_behavior.rb +65 -65
- data/app/behaviors/ui/alert_behavior.rb +53 -36
- data/app/behaviors/ui/alert_description_behavior.rb +25 -25
- data/app/behaviors/ui/alert_dialog_action_behavior.rb +21 -21
- data/app/behaviors/ui/alert_dialog_behavior.rb +58 -33
- data/app/behaviors/ui/alert_dialog_cancel_behavior.rb +21 -21
- data/app/behaviors/ui/alert_dialog_content_behavior.rb +34 -34
- data/app/behaviors/ui/alert_dialog_description_behavior.rb +19 -19
- data/app/behaviors/ui/alert_dialog_footer_behavior.rb +20 -20
- data/app/behaviors/ui/alert_dialog_header_behavior.rb +19 -19
- data/app/behaviors/ui/alert_dialog_overlay_behavior.rb +56 -56
- data/app/behaviors/ui/alert_dialog_title_behavior.rb +19 -19
- data/app/behaviors/ui/alert_dialog_trigger_behavior.rb +31 -31
- data/app/behaviors/ui/alert_title_behavior.rb +25 -25
- data/app/behaviors/ui/aspect_ratio_behavior.rb +46 -38
- data/app/behaviors/ui/avatar_behavior.rb +44 -37
- data/app/behaviors/ui/avatar_fallback_behavior.rb +37 -37
- data/app/behaviors/ui/avatar_image_behavior.rb +40 -40
- data/app/behaviors/ui/badge_behavior.rb +50 -43
- data/app/behaviors/ui/blockquote_behavior.rb +25 -17
- data/app/behaviors/ui/breadcrumb_behavior.rb +35 -19
- data/app/behaviors/ui/breadcrumb_ellipsis_behavior.rb +28 -28
- data/app/behaviors/ui/breadcrumb_item_behavior.rb +26 -26
- data/app/behaviors/ui/breadcrumb_link_behavior.rb +27 -27
- data/app/behaviors/ui/breadcrumb_list_behavior.rb +26 -26
- data/app/behaviors/ui/breadcrumb_page_behavior.rb +29 -29
- data/app/behaviors/ui/breadcrumb_separator_behavior.rb +28 -28
- data/app/behaviors/ui/button_behavior.rb +94 -82
- data/app/behaviors/ui/button_group_behavior.rb +48 -48
- data/app/behaviors/ui/button_group_separator_behavior.rb +29 -29
- data/app/behaviors/ui/button_group_text_behavior.rb +29 -29
- data/app/behaviors/ui/calendar_behavior.rb +131 -104
- data/app/behaviors/ui/card_action_behavior.rb +26 -26
- data/app/behaviors/ui/card_behavior.rb +40 -26
- data/app/behaviors/ui/card_content_behavior.rb +26 -26
- data/app/behaviors/ui/card_description_behavior.rb +26 -26
- data/app/behaviors/ui/card_footer_behavior.rb +26 -26
- data/app/behaviors/ui/card_header_behavior.rb +26 -26
- data/app/behaviors/ui/card_title_behavior.rb +26 -26
- data/app/behaviors/ui/carousel_behavior.rb +74 -48
- data/app/behaviors/ui/carousel_content_behavior.rb +53 -53
- data/app/behaviors/ui/carousel_item_behavior.rb +20 -20
- data/app/behaviors/ui/carousel_next_behavior.rb +31 -31
- data/app/behaviors/ui/carousel_previous_behavior.rb +31 -31
- data/app/behaviors/ui/checkbox_behavior.rb +54 -38
- data/app/behaviors/ui/collapsible_behavior.rb +49 -34
- data/app/behaviors/ui/collapsible_content_behavior.rb +31 -31
- data/app/behaviors/ui/collapsible_trigger_behavior.rb +47 -47
- data/app/behaviors/ui/command_behavior.rb +56 -29
- data/app/behaviors/ui/command_dialog_behavior.rb +44 -28
- data/app/behaviors/ui/command_empty_behavior.rb +28 -28
- data/app/behaviors/ui/command_group_behavior.rb +34 -34
- data/app/behaviors/ui/command_input_behavior.rb +40 -40
- data/app/behaviors/ui/command_item_behavior.rb +39 -39
- data/app/behaviors/ui/command_list_behavior.rb +30 -30
- data/app/behaviors/ui/command_separator_behavior.rb +23 -23
- data/app/behaviors/ui/command_shortcut_behavior.rb +22 -22
- data/app/behaviors/ui/context_menu_behavior.rb +55 -28
- data/app/behaviors/ui/context_menu_checkbox_item_behavior.rb +32 -32
- data/app/behaviors/ui/context_menu_content_behavior.rb +32 -32
- data/app/behaviors/ui/context_menu_item_behavior.rb +34 -34
- data/app/behaviors/ui/context_menu_label_behavior.rb +28 -28
- data/app/behaviors/ui/context_menu_radio_group_behavior.rb +17 -17
- data/app/behaviors/ui/context_menu_radio_item_behavior.rb +32 -32
- data/app/behaviors/ui/context_menu_separator_behavior.rb +18 -18
- data/app/behaviors/ui/context_menu_shortcut_behavior.rb +17 -17
- data/app/behaviors/ui/context_menu_trigger_behavior.rb +28 -28
- data/app/behaviors/ui/date_picker_behavior.rb +95 -78
- data/app/behaviors/ui/date_picker_input_behavior.rb +56 -56
- data/app/behaviors/ui/date_picker_trigger_behavior.rb +56 -56
- data/app/behaviors/ui/dialog_behavior.rb +67 -42
- data/app/behaviors/ui/dialog_content_behavior.rb +38 -38
- data/app/behaviors/ui/dialog_footer_behavior.rb +20 -20
- data/app/behaviors/ui/dialog_header_behavior.rb +20 -20
- data/app/behaviors/ui/dialog_overlay_behavior.rb +57 -57
- data/app/behaviors/ui/drawer_behavior.rb +79 -52
- data/app/behaviors/ui/drawer_close_behavior.rb +8 -8
- data/app/behaviors/ui/drawer_content_behavior.rb +90 -90
- data/app/behaviors/ui/drawer_description_behavior.rb +17 -17
- data/app/behaviors/ui/drawer_footer_behavior.rb +17 -17
- data/app/behaviors/ui/drawer_handle_behavior.rb +33 -33
- data/app/behaviors/ui/drawer_header_behavior.rb +23 -23
- data/app/behaviors/ui/drawer_overlay_behavior.rb +63 -63
- data/app/behaviors/ui/drawer_title_behavior.rb +20 -20
- data/app/behaviors/ui/drawer_trigger_behavior.rb +15 -15
- data/app/behaviors/ui/dropdown_menu_behavior.rb +59 -37
- data/app/behaviors/ui/dropdown_menu_checkbox_item_behavior.rb +37 -39
- data/app/behaviors/ui/dropdown_menu_content_behavior.rb +32 -32
- data/app/behaviors/ui/dropdown_menu_item_behavior.rb +34 -34
- data/app/behaviors/ui/dropdown_menu_label_behavior.rb +25 -25
- data/app/behaviors/ui/dropdown_menu_radio_group_behavior.rb +17 -17
- data/app/behaviors/ui/dropdown_menu_radio_item_behavior.rb +37 -39
- data/app/behaviors/ui/dropdown_menu_separator_behavior.rb +19 -19
- data/app/behaviors/ui/dropdown_menu_shortcut_behavior.rb +17 -17
- data/app/behaviors/ui/dropdown_menu_sub_behavior.rb +17 -17
- data/app/behaviors/ui/dropdown_menu_sub_content_behavior.rb +33 -33
- data/app/behaviors/ui/dropdown_menu_sub_trigger_behavior.rb +30 -30
- data/app/behaviors/ui/dropdown_menu_trigger_behavior.rb +39 -39
- data/app/behaviors/ui/empty_behavior.rb +111 -100
- data/app/behaviors/ui/field_behavior.rb +51 -37
- data/app/behaviors/ui/field_content_behavior.rb +18 -20
- data/app/behaviors/ui/field_description_behavior.rb +18 -20
- data/app/behaviors/ui/field_error_behavior.rb +42 -37
- data/app/behaviors/ui/field_group_behavior.rb +18 -20
- data/app/behaviors/ui/field_label_behavior.rb +19 -21
- data/app/behaviors/ui/field_legend_behavior.rb +26 -22
- data/app/behaviors/ui/field_separator_behavior.rb +24 -26
- data/app/behaviors/ui/field_set_behavior.rb +24 -20
- data/app/behaviors/ui/field_title_behavior.rb +18 -20
- data/app/behaviors/ui/h1_behavior.rb +25 -17
- data/app/behaviors/ui/h2_behavior.rb +25 -17
- data/app/behaviors/ui/h3_behavior.rb +25 -17
- data/app/behaviors/ui/h4_behavior.rb +25 -17
- data/app/behaviors/ui/hover_card_behavior.rb +41 -25
- data/app/behaviors/ui/hover_card_content_behavior.rb +35 -35
- data/app/behaviors/ui/hover_card_trigger_behavior.rb +38 -38
- data/app/behaviors/ui/inline_code_behavior.rb +25 -17
- data/app/behaviors/ui/input_behavior.rb +52 -42
- data/app/behaviors/ui/input_group_addon_behavior.rb +9 -2
- data/app/behaviors/ui/input_group_behavior.rb +3 -1
- data/app/behaviors/ui/input_group_button_behavior.rb +16 -8
- data/app/behaviors/ui/input_group_input_behavior.rb +1 -1
- data/app/behaviors/ui/input_group_textarea_behavior.rb +9 -3
- data/app/behaviors/ui/input_otp_behavior.rb +50 -36
- data/app/behaviors/ui/input_otp_group_behavior.rb +25 -25
- data/app/behaviors/ui/input_otp_separator_behavior.rb +26 -26
- data/app/behaviors/ui/input_otp_slot_behavior.rb +49 -41
- data/app/behaviors/ui/item_actions_behavior.rb +32 -26
- data/app/behaviors/ui/item_behavior.rb +100 -87
- data/app/behaviors/ui/item_content_behavior.rb +27 -26
- data/app/behaviors/ui/item_description_behavior.rb +27 -26
- data/app/behaviors/ui/item_footer_behavior.rb +27 -26
- data/app/behaviors/ui/item_group_behavior.rb +27 -26
- data/app/behaviors/ui/item_header_behavior.rb +27 -26
- data/app/behaviors/ui/item_media_behavior.rb +47 -41
- data/app/behaviors/ui/item_separator_behavior.rb +27 -26
- data/app/behaviors/ui/item_title_behavior.rb +27 -26
- data/app/behaviors/ui/kbd_behavior.rb +28 -22
- data/app/behaviors/ui/kbd_group_behavior.rb +18 -20
- data/app/behaviors/ui/label_behavior.rb +35 -26
- data/app/behaviors/ui/large_behavior.rb +25 -17
- data/app/behaviors/ui/lead_behavior.rb +25 -17
- data/app/behaviors/ui/list_behavior.rb +25 -17
- data/app/behaviors/ui/menubar_behavior.rb +73 -35
- data/app/behaviors/ui/menubar_checkbox_item_behavior.rb +54 -54
- data/app/behaviors/ui/menubar_content_behavior.rb +46 -46
- data/app/behaviors/ui/menubar_item_behavior.rb +63 -63
- data/app/behaviors/ui/menubar_label_behavior.rb +33 -33
- data/app/behaviors/ui/menubar_menu_behavior.rb +37 -33
- data/app/behaviors/ui/menubar_radio_group_behavior.rb +28 -28
- data/app/behaviors/ui/menubar_radio_item_behavior.rb +59 -59
- data/app/behaviors/ui/menubar_separator_behavior.rb +26 -26
- data/app/behaviors/ui/menubar_shortcut_behavior.rb +25 -25
- data/app/behaviors/ui/menubar_sub_behavior.rb +26 -26
- data/app/behaviors/ui/menubar_sub_content_behavior.rb +44 -44
- data/app/behaviors/ui/menubar_sub_trigger_behavior.rb +55 -55
- data/app/behaviors/ui/menubar_trigger_behavior.rb +40 -42
- data/app/behaviors/ui/muted_behavior.rb +25 -17
- data/app/behaviors/ui/navigation_menu_behavior.rb +65 -36
- data/app/behaviors/ui/navigation_menu_content_behavior.rb +58 -59
- data/app/behaviors/ui/navigation_menu_item_behavior.rb +31 -32
- data/app/behaviors/ui/navigation_menu_link_behavior.rb +57 -57
- data/app/behaviors/ui/navigation_menu_list_behavior.rb +28 -29
- data/app/behaviors/ui/navigation_menu_trigger_behavior.rb +50 -51
- data/app/behaviors/ui/navigation_menu_viewport_behavior.rb +54 -55
- data/app/behaviors/ui/p_behavior.rb +25 -17
- data/app/behaviors/ui/pagination_behavior.rb +36 -22
- data/app/behaviors/ui/pagination_content_behavior.rb +20 -20
- data/app/behaviors/ui/pagination_ellipsis_behavior.rb +21 -21
- data/app/behaviors/ui/pagination_item_behavior.rb +11 -11
- data/app/behaviors/ui/pagination_link_behavior.rb +51 -51
- data/app/behaviors/ui/pagination_next_behavior.rb +16 -16
- data/app/behaviors/ui/pagination_previous_behavior.rb +16 -16
- data/app/behaviors/ui/popover_behavior.rb +33 -6
- data/app/behaviors/ui/popover_content_behavior.rb +1 -1
- data/app/behaviors/ui/popover_trigger_behavior.rb +1 -1
- data/app/behaviors/ui/progress_behavior.rb +59 -40
- data/app/behaviors/ui/radio_button_behavior.rb +51 -36
- data/app/behaviors/ui/resizable_handle_behavior.rb +73 -73
- data/app/behaviors/ui/resizable_panel_behavior.rb +52 -45
- data/app/behaviors/ui/resizable_panel_group_behavior.rb +36 -36
- data/app/behaviors/ui/responsive_dialog_behavior.rb +43 -33
- data/app/behaviors/ui/scroll_area_behavior.rb +17 -2
- data/app/behaviors/ui/scroll_area_corner_behavior.rb +8 -2
- data/app/behaviors/ui/scroll_area_scrollbar_behavior.rb +8 -2
- data/app/behaviors/ui/scroll_area_thumb_behavior.rb +8 -2
- data/app/behaviors/ui/select_behavior.rb +111 -61
- data/app/behaviors/ui/select_content_behavior.rb +31 -31
- data/app/behaviors/ui/select_group_behavior.rb +24 -24
- data/app/behaviors/ui/select_item_behavior.rb +34 -34
- data/app/behaviors/ui/select_label_behavior.rb +23 -23
- data/app/behaviors/ui/select_scroll_down_button_behavior.rb +38 -38
- data/app/behaviors/ui/select_scroll_up_button_behavior.rb +38 -38
- data/app/behaviors/ui/select_trigger_behavior.rb +29 -29
- data/app/behaviors/ui/separator_behavior.rb +53 -49
- data/app/behaviors/ui/shared_as_child_behavior.rb +63 -63
- data/app/behaviors/ui/sheet_behavior.rb +63 -42
- data/app/behaviors/ui/sheet_content_behavior.rb +80 -80
- data/app/behaviors/ui/sheet_footer_behavior.rb +21 -21
- data/app/behaviors/ui/sheet_header_behavior.rb +21 -21
- data/app/behaviors/ui/sheet_overlay_behavior.rb +64 -64
- data/app/behaviors/ui/sidebar_behavior.rb +91 -76
- data/app/behaviors/ui/sidebar_content_behavior.rb +28 -28
- data/app/behaviors/ui/sidebar_footer_behavior.rb +27 -27
- data/app/behaviors/ui/sidebar_group_action_behavior.rb +32 -32
- data/app/behaviors/ui/sidebar_group_behavior.rb +27 -27
- data/app/behaviors/ui/sidebar_group_content_behavior.rb +27 -27
- data/app/behaviors/ui/sidebar_group_label_behavior.rb +31 -31
- data/app/behaviors/ui/sidebar_header_behavior.rb +27 -27
- data/app/behaviors/ui/sidebar_input_behavior.rb +28 -28
- data/app/behaviors/ui/sidebar_inset_behavior.rb +37 -31
- data/app/behaviors/ui/sidebar_menu_action_behavior.rb +45 -45
- data/app/behaviors/ui/sidebar_menu_badge_behavior.rb +38 -31
- data/app/behaviors/ui/sidebar_menu_behavior.rb +38 -27
- data/app/behaviors/ui/sidebar_menu_button_behavior.rb +67 -58
- data/app/behaviors/ui/sidebar_menu_item_behavior.rb +27 -27
- data/app/behaviors/ui/sidebar_menu_skeleton_behavior.rb +34 -27
- data/app/behaviors/ui/sidebar_menu_sub_behavior.rb +28 -28
- data/app/behaviors/ui/sidebar_menu_sub_button_behavior.rb +64 -55
- data/app/behaviors/ui/sidebar_menu_sub_item_behavior.rb +27 -27
- data/app/behaviors/ui/sidebar_provider_behavior.rb +53 -47
- data/app/behaviors/ui/sidebar_rail_behavior.rb +46 -39
- data/app/behaviors/ui/sidebar_separator_behavior.rb +28 -28
- data/app/behaviors/ui/sidebar_trigger_behavior.rb +32 -32
- data/app/behaviors/ui/slider_behavior.rb +40 -40
- data/app/behaviors/ui/slider_range_behavior.rb +15 -15
- data/app/behaviors/ui/slider_thumb_behavior.rb +21 -21
- data/app/behaviors/ui/slider_track_behavior.rb +19 -19
- data/app/behaviors/ui/small_behavior.rb +25 -17
- data/app/behaviors/ui/sonner_toaster_behavior.rb +37 -29
- data/app/behaviors/ui/spinner_behavior.rb +46 -41
- data/app/behaviors/ui/switch_behavior.rb +28 -7
- data/app/behaviors/ui/table_behavior.rb +30 -22
- data/app/behaviors/ui/table_body_behavior.rb +28 -22
- data/app/behaviors/ui/table_caption_behavior.rb +28 -22
- data/app/behaviors/ui/table_cell_behavior.rb +28 -22
- data/app/behaviors/ui/table_footer_behavior.rb +22 -22
- data/app/behaviors/ui/table_head_behavior.rb +28 -22
- data/app/behaviors/ui/table_header_behavior.rb +22 -22
- data/app/behaviors/ui/table_row_behavior.rb +28 -22
- data/app/behaviors/ui/tabs_behavior.rb +53 -28
- data/app/behaviors/ui/tabs_content_behavior.rb +33 -33
- data/app/behaviors/ui/tabs_list_behavior.rb +17 -17
- data/app/behaviors/ui/tabs_trigger_behavior.rb +42 -42
- data/app/behaviors/ui/textarea_behavior.rb +36 -28
- data/app/behaviors/ui/toggle_behavior.rb +83 -68
- data/app/behaviors/ui/toggle_group_behavior.rb +50 -52
- data/app/behaviors/ui/toggle_group_item_behavior.rb +73 -71
- data/app/behaviors/ui/tooltip_behavior.rb +46 -22
- data/app/behaviors/ui/tooltip_content_behavior.rb +53 -53
- data/app/behaviors/ui/tooltip_trigger_behavior.rb +55 -55
- data/app/components/ui/accordion.rb +32 -32
- data/app/components/ui/accordion_content.rb +25 -25
- data/app/components/ui/accordion_item.rb +41 -41
- data/app/components/ui/accordion_trigger.rb +44 -44
- data/app/components/ui/alert.rb +26 -26
- data/app/components/ui/alert_description.rb +21 -21
- data/app/components/ui/alert_dialog.rb +28 -28
- data/app/components/ui/alert_dialog_action.rb +29 -29
- data/app/components/ui/alert_dialog_cancel.rb +29 -29
- data/app/components/ui/alert_dialog_content.rb +20 -20
- data/app/components/ui/alert_dialog_description.rb +20 -20
- data/app/components/ui/alert_dialog_footer.rb +23 -23
- data/app/components/ui/alert_dialog_header.rb +22 -22
- data/app/components/ui/alert_dialog_overlay.rb +25 -25
- data/app/components/ui/alert_dialog_title.rb +20 -20
- data/app/components/ui/alert_dialog_trigger.rb +22 -22
- data/app/components/ui/alert_title.rb +19 -19
- data/app/components/ui/aspect_ratio.rb +26 -26
- data/app/components/ui/avatar.rb +26 -26
- data/app/components/ui/avatar_fallback.rb +28 -28
- data/app/components/ui/avatar_image.rb +29 -29
- data/app/components/ui/badge.rb +32 -32
- data/app/components/ui/base.rb +8 -0
- data/app/components/ui/blockquote.rb +1 -0
- data/app/components/ui/breadcrumb.rb +26 -26
- data/app/components/ui/breadcrumb_ellipsis.rb +47 -47
- data/app/components/ui/breadcrumb_item.rb +22 -22
- data/app/components/ui/breadcrumb_link.rb +22 -22
- data/app/components/ui/breadcrumb_list.rb +22 -22
- data/app/components/ui/breadcrumb_page.rb +20 -20
- data/app/components/ui/breadcrumb_separator.rb +43 -43
- data/app/components/ui/button.rb +44 -44
- data/app/components/ui/button_group.rb +44 -44
- data/app/components/ui/button_group_separator.rb +28 -28
- data/app/components/ui/button_group_text.rb +40 -40
- data/app/components/ui/calendar.rb +231 -180
- data/app/components/ui/card.rb +10 -10
- data/app/components/ui/card_action.rb +10 -10
- data/app/components/ui/card_content.rb +10 -10
- data/app/components/ui/card_description.rb +10 -10
- data/app/components/ui/card_footer.rb +10 -10
- data/app/components/ui/card_header.rb +10 -10
- data/app/components/ui/card_title.rb +10 -10
- data/app/components/ui/carousel.rb +14 -13
- data/app/components/ui/carousel_content.rb +12 -11
- data/app/components/ui/carousel_item.rb +11 -10
- data/app/components/ui/carousel_next.rb +13 -25
- data/app/components/ui/carousel_previous.rb +13 -25
- data/app/components/ui/checkbox.rb +43 -43
- data/app/components/ui/collapsible.rb +17 -17
- data/app/components/ui/collapsible_content.rb +11 -11
- data/app/components/ui/collapsible_trigger.rb +15 -15
- data/app/components/ui/combobox_wrapper.rb +53 -53
- data/app/components/ui/command.rb +12 -11
- data/app/components/ui/command_dialog.rb +17 -16
- data/app/components/ui/command_empty.rb +10 -10
- data/app/components/ui/command_group.rb +15 -15
- data/app/components/ui/command_input.rb +26 -26
- data/app/components/ui/command_item.rb +12 -12
- data/app/components/ui/command_list.rb +10 -10
- data/app/components/ui/command_separator.rb +10 -10
- data/app/components/ui/command_shortcut.rb +10 -10
- data/app/components/ui/context_menu.rb +25 -25
- data/app/components/ui/context_menu_checkbox_item.rb +42 -42
- data/app/components/ui/context_menu_content.rb +22 -22
- data/app/components/ui/context_menu_item.rb +34 -34
- data/app/components/ui/context_menu_label.rb +22 -22
- data/app/components/ui/context_menu_radio_group.rb +23 -23
- data/app/components/ui/context_menu_radio_item.rb +42 -42
- data/app/components/ui/context_menu_separator.rb +19 -19
- data/app/components/ui/context_menu_shortcut.rb +20 -20
- data/app/components/ui/context_menu_trigger.rb +22 -22
- data/app/components/ui/date_picker.rb +116 -116
- data/app/components/ui/date_picker_input.rb +66 -66
- data/app/components/ui/date_picker_trigger.rb +63 -63
- data/app/components/ui/dialog.rb +14 -14
- data/app/components/ui/dialog_close.rb +22 -22
- data/app/components/ui/dialog_content.rb +12 -12
- data/app/components/ui/dialog_description.rb +17 -17
- data/app/components/ui/dialog_footer.rb +10 -10
- data/app/components/ui/dialog_header.rb +10 -10
- data/app/components/ui/dialog_overlay.rb +13 -13
- data/app/components/ui/dialog_title.rb +17 -17
- data/app/components/ui/dialog_trigger.rb +32 -32
- data/app/components/ui/drawer.rb +34 -34
- data/app/components/ui/drawer_close.rb +18 -18
- data/app/components/ui/drawer_content.rb +14 -14
- data/app/components/ui/drawer_description.rb +11 -11
- data/app/components/ui/drawer_footer.rb +11 -11
- data/app/components/ui/drawer_handle.rb +10 -10
- data/app/components/ui/drawer_header.rb +11 -11
- data/app/components/ui/drawer_overlay.rb +12 -12
- data/app/components/ui/drawer_title.rb +11 -11
- data/app/components/ui/drawer_trigger.rb +29 -29
- data/app/components/ui/dropdown_menu.rb +49 -49
- data/app/components/ui/dropdown_menu_checkbox_item.rb +45 -45
- data/app/components/ui/dropdown_menu_content.rb +24 -24
- data/app/components/ui/dropdown_menu_item.rb +34 -34
- data/app/components/ui/dropdown_menu_label.rb +22 -22
- data/app/components/ui/dropdown_menu_radio_group.rb +23 -23
- data/app/components/ui/dropdown_menu_radio_item.rb +47 -47
- data/app/components/ui/dropdown_menu_separator.rb +19 -19
- data/app/components/ui/dropdown_menu_shortcut.rb +20 -20
- data/app/components/ui/dropdown_menu_sub.rb +23 -23
- data/app/components/ui/dropdown_menu_sub_content.rb +26 -26
- data/app/components/ui/dropdown_menu_sub_trigger.rb +40 -40
- data/app/components/ui/dropdown_menu_trigger.rb +37 -36
- data/app/components/ui/empty.rb +21 -21
- data/app/components/ui/empty_content.rb +18 -18
- data/app/components/ui/empty_description.rb +16 -16
- data/app/components/ui/empty_header.rb +20 -20
- data/app/components/ui/empty_media.rb +24 -24
- data/app/components/ui/empty_title.rb +16 -16
- data/app/components/ui/field.rb +30 -30
- data/app/components/ui/field_content.rb +20 -20
- data/app/components/ui/field_description.rb +20 -20
- data/app/components/ui/field_error.rb +50 -50
- data/app/components/ui/field_group.rb +23 -23
- data/app/components/ui/field_label.rb +22 -22
- data/app/components/ui/field_legend.rb +25 -25
- data/app/components/ui/field_separator.rb +41 -41
- data/app/components/ui/field_set.rb +22 -22
- data/app/components/ui/field_title.rb +20 -20
- data/app/components/ui/h1.rb +1 -0
- data/app/components/ui/h2.rb +1 -0
- data/app/components/ui/h3.rb +1 -0
- data/app/components/ui/h4.rb +1 -0
- data/app/components/ui/hover_card.rb +22 -22
- data/app/components/ui/hover_card_content.rb +28 -28
- data/app/components/ui/hover_card_trigger.rb +40 -40
- data/app/components/ui/inline_code.rb +1 -0
- data/app/components/ui/input.rb +15 -15
- data/app/components/ui/input_group.rb +28 -28
- data/app/components/ui/input_group_addon.rb +27 -27
- data/app/components/ui/input_group_button.rb +42 -35
- data/app/components/ui/input_group_input.rb +39 -39
- data/app/components/ui/input_group_text.rb +26 -26
- data/app/components/ui/input_group_textarea.rb +39 -39
- data/app/components/ui/input_otp.rb +48 -48
- data/app/components/ui/input_otp_group.rb +21 -21
- data/app/components/ui/input_otp_separator.rb +28 -28
- data/app/components/ui/input_otp_slot.rb +28 -28
- data/app/components/ui/item.rb +20 -20
- data/app/components/ui/item_actions.rb +10 -10
- data/app/components/ui/item_content.rb +10 -10
- data/app/components/ui/item_description.rb +10 -10
- data/app/components/ui/item_footer.rb +10 -10
- data/app/components/ui/item_group.rb +10 -10
- data/app/components/ui/item_header.rb +10 -10
- data/app/components/ui/item_media.rb +11 -11
- data/app/components/ui/item_separator.rb +10 -10
- data/app/components/ui/item_title.rb +10 -10
- data/app/components/ui/kbd.rb +24 -24
- data/app/components/ui/kbd_group.rb +25 -25
- data/app/components/ui/label.rb +25 -25
- data/app/components/ui/large.rb +1 -0
- data/app/components/ui/lead.rb +1 -0
- data/app/components/ui/list.rb +1 -0
- data/app/components/ui/menubar.rb +31 -31
- data/app/components/ui/menubar_checkbox_item.rb +45 -45
- data/app/components/ui/menubar_content.rb +27 -27
- data/app/components/ui/menubar_item.rb +34 -34
- data/app/components/ui/menubar_label.rb +24 -24
- data/app/components/ui/menubar_menu.rb +24 -24
- data/app/components/ui/menubar_radio_group.rb +24 -24
- data/app/components/ui/menubar_radio_item.rb +47 -47
- data/app/components/ui/menubar_separator.rb +18 -18
- data/app/components/ui/menubar_shortcut.rb +22 -22
- data/app/components/ui/menubar_sub.rb +25 -25
- data/app/components/ui/menubar_sub_content.rb +22 -22
- data/app/components/ui/menubar_sub_trigger.rb +41 -41
- data/app/components/ui/menubar_trigger.rb +21 -21
- data/app/components/ui/muted.rb +1 -0
- data/app/components/ui/navigation_menu.rb +43 -43
- data/app/components/ui/navigation_menu_content.rb +28 -28
- data/app/components/ui/navigation_menu_item.rb +31 -31
- data/app/components/ui/navigation_menu_link.rb +60 -60
- data/app/components/ui/navigation_menu_list.rb +23 -23
- data/app/components/ui/navigation_menu_trigger.rb +44 -44
- data/app/components/ui/navigation_menu_viewport.rb +20 -20
- data/app/components/ui/p.rb +1 -0
- data/app/components/ui/pagination.rb +15 -15
- data/app/components/ui/pagination_content.rb +15 -15
- data/app/components/ui/pagination_ellipsis.rb +20 -20
- data/app/components/ui/pagination_item.rb +13 -13
- data/app/components/ui/pagination_link.rb +21 -21
- data/app/components/ui/pagination_next.rb +25 -25
- data/app/components/ui/pagination_previous.rb +25 -25
- data/app/components/ui/popover.rb +67 -42
- data/app/components/ui/popover_content.rb +25 -25
- data/app/components/ui/popover_trigger.rb +30 -30
- data/app/components/ui/progress.rb +32 -32
- data/app/components/ui/radio_button.rb +44 -44
- data/app/components/ui/resizable_handle.rb +49 -49
- data/app/components/ui/resizable_panel.rb +31 -31
- data/app/components/ui/resizable_panel_group.rb +37 -37
- data/app/components/ui/responsive_dialog.rb +81 -81
- data/app/components/ui/scroll_area.rb +54 -54
- data/app/components/ui/scroll_area_corner.rb +27 -27
- data/app/components/ui/scroll_area_scrollbar.rb +37 -37
- data/app/components/ui/scroll_area_thumb.rb +31 -31
- data/app/components/ui/scroll_area_viewport.rb +33 -33
- data/app/components/ui/select.rb +49 -37
- data/app/components/ui/select_content.rb +36 -36
- data/app/components/ui/select_group.rb +32 -32
- data/app/components/ui/select_item.rb +58 -58
- data/app/components/ui/select_label.rb +28 -28
- data/app/components/ui/select_scroll_down_button.rb +39 -39
- data/app/components/ui/select_scroll_up_button.rb +39 -39
- data/app/components/ui/select_trigger.rb +38 -38
- data/app/components/ui/separator.rb +35 -35
- data/app/components/ui/sheet.rb +14 -14
- data/app/components/ui/sheet_close.rb +32 -32
- data/app/components/ui/sheet_content.rb +45 -45
- data/app/components/ui/sheet_description.rb +17 -17
- data/app/components/ui/sheet_footer.rb +10 -10
- data/app/components/ui/sheet_header.rb +10 -10
- data/app/components/ui/sheet_overlay.rb +13 -13
- data/app/components/ui/sheet_title.rb +17 -17
- data/app/components/ui/sheet_trigger.rb +21 -21
- data/app/components/ui/sidebar.rb +85 -85
- data/app/components/ui/sidebar_content.rb +27 -27
- data/app/components/ui/sidebar_footer.rb +29 -29
- data/app/components/ui/sidebar_group.rb +45 -45
- data/app/components/ui/sidebar_group_action.rb +39 -39
- data/app/components/ui/sidebar_group_content.rb +35 -35
- data/app/components/ui/sidebar_group_label.rb +38 -38
- data/app/components/ui/sidebar_header.rb +29 -29
- data/app/components/ui/sidebar_input.rb +35 -35
- data/app/components/ui/sidebar_inset.rb +35 -35
- data/app/components/ui/sidebar_menu.rb +32 -32
- data/app/components/ui/sidebar_menu_action.rb +52 -52
- data/app/components/ui/sidebar_menu_badge.rb +32 -32
- data/app/components/ui/sidebar_menu_button.rb +63 -63
- data/app/components/ui/sidebar_menu_item.rb +38 -38
- data/app/components/ui/sidebar_menu_skeleton.rb +57 -57
- data/app/components/ui/sidebar_menu_sub.rb +43 -43
- data/app/components/ui/sidebar_menu_sub_button.rb +40 -40
- data/app/components/ui/sidebar_menu_sub_item.rb +27 -27
- data/app/components/ui/sidebar_provider.rb +66 -66
- data/app/components/ui/sidebar_rail.rb +28 -28
- data/app/components/ui/sidebar_separator.rb +25 -25
- data/app/components/ui/sidebar_trigger.rb +54 -54
- data/app/components/ui/skeleton.rb +37 -37
- data/app/components/ui/small.rb +1 -0
- data/app/components/ui/sonner_toaster.rb +49 -49
- data/app/components/ui/spinner.rb +36 -36
- data/app/components/ui/switch.rb +62 -62
- data/app/components/ui/table.rb +42 -42
- data/app/components/ui/table_body.rb +22 -22
- data/app/components/ui/table_caption.rb +11 -11
- data/app/components/ui/table_cell.rb +11 -11
- data/app/components/ui/table_footer.rb +22 -22
- data/app/components/ui/table_head.rb +11 -11
- data/app/components/ui/table_header.rb +22 -22
- data/app/components/ui/table_row.rb +19 -19
- data/app/components/ui/tabs.rb +36 -36
- data/app/components/ui/tabs_content.rb +26 -26
- data/app/components/ui/tabs_list.rb +23 -23
- data/app/components/ui/tabs_trigger.rb +29 -29
- data/app/components/ui/textarea.rb +15 -15
- data/app/components/ui/toggle.rb +38 -38
- data/app/components/ui/toggle_group.rb +58 -52
- data/app/components/ui/toggle_group_item.rb +62 -61
- data/app/components/ui/tooltip.rb +49 -25
- data/app/components/ui/tooltip_content.rb +31 -31
- data/app/components/ui/tooltip_trigger.rb +36 -36
- data/app/helpers/ui/combobox_behavior.rb +1 -1
- data/app/helpers/ui/empty_behavior.rb +6 -6
- data/app/helpers/ui/input_group_input_behavior.rb +1 -1
- data/app/helpers/ui/input_group_textarea_behavior.rb +1 -1
- data/app/helpers/ui/popover_behavior.rb +5 -2
- data/app/helpers/ui/popover_content_behavior.rb +1 -1
- data/app/helpers/ui/popover_trigger_behavior.rb +1 -1
- data/app/helpers/ui/select_behavior.rb +61 -61
- data/app/helpers/ui/select_content_behavior.rb +31 -31
- data/app/helpers/ui/select_group_behavior.rb +24 -24
- data/app/helpers/ui/select_item_behavior.rb +34 -34
- data/app/helpers/ui/select_label_behavior.rb +23 -23
- data/app/helpers/ui/select_scroll_down_button_behavior.rb +38 -38
- data/app/helpers/ui/select_scroll_up_button_behavior.rb +38 -38
- data/app/helpers/ui/select_trigger_behavior.rb +29 -29
- data/app/helpers/ui/spinner_behavior.rb +1 -1
- data/app/javascript/ui/controllers/accordion_controller.js +15 -3
- data/app/javascript/ui/controllers/collapsible_controller.js +2 -0
- data/app/javascript/ui/controllers/command_controller.js +4 -3
- data/app/javascript/ui/controllers/dropdown_controller.js +8 -14
- data/app/view_components/ui/accordion_component.rb +31 -31
- data/app/view_components/ui/accordion_content_component.rb +24 -24
- data/app/view_components/ui/accordion_item_component.rb +37 -37
- data/app/view_components/ui/accordion_trigger_component.rb +25 -25
- data/app/view_components/ui/alert_component.rb +18 -18
- data/app/view_components/ui/alert_description_component.rb +16 -16
- data/app/view_components/ui/alert_title_component.rb +16 -16
- data/app/view_components/ui/aspect_ratio_component.rb +20 -20
- data/app/view_components/ui/avatar_component.rb +16 -16
- data/app/view_components/ui/avatar_fallback_component.rb +16 -16
- data/app/view_components/ui/avatar_image_component.rb +19 -19
- data/app/view_components/ui/badge_component.rb +18 -18
- data/app/view_components/ui/blockquote_component.rb +1 -0
- data/app/view_components/ui/breadcrumb_component.rb +28 -28
- data/app/view_components/ui/breadcrumb_ellipsis_component.rb +41 -41
- data/app/view_components/ui/breadcrumb_item_component.rb +24 -24
- data/app/view_components/ui/breadcrumb_link_component.rb +24 -24
- data/app/view_components/ui/breadcrumb_list_component.rb +24 -24
- data/app/view_components/ui/breadcrumb_page_component.rb +22 -22
- data/app/view_components/ui/breadcrumb_separator_component.rb +38 -38
- data/app/view_components/ui/button_component.rb +39 -39
- data/app/view_components/ui/button_group_component.rb +33 -33
- data/app/view_components/ui/button_group_separator_component.rb +29 -29
- data/app/view_components/ui/button_group_text_component.rb +25 -25
- data/app/view_components/ui/calendar_component.rb +241 -182
- data/app/view_components/ui/card_action_component.rb +10 -10
- data/app/view_components/ui/card_component.rb +10 -10
- data/app/view_components/ui/card_content_component.rb +10 -10
- data/app/view_components/ui/card_description_component.rb +10 -10
- data/app/view_components/ui/card_footer_component.rb +10 -10
- data/app/view_components/ui/card_header_component.rb +10 -10
- data/app/view_components/ui/card_title_component.rb +10 -10
- data/app/view_components/ui/carousel_component.rb +14 -13
- data/app/view_components/ui/carousel_content_component.rb +12 -11
- data/app/view_components/ui/carousel_item_component.rb +11 -10
- data/app/view_components/ui/carousel_next_component.rb +15 -27
- data/app/view_components/ui/carousel_previous_component.rb +15 -27
- data/app/view_components/ui/checkbox_component.rb +48 -48
- data/app/view_components/ui/collapsible_component.rb +17 -17
- data/app/view_components/ui/collapsible_content_component.rb +11 -11
- data/app/view_components/ui/collapsible_trigger_component.rb +15 -15
- data/app/view_components/ui/combobox_wrapper_component.rb +53 -53
- data/app/view_components/ui/command_component.rb +12 -11
- data/app/view_components/ui/command_dialog_component.rb +17 -16
- data/app/view_components/ui/command_empty_component.rb +10 -10
- data/app/view_components/ui/command_group_component.rb +16 -16
- data/app/view_components/ui/command_input_component.rb +15 -15
- data/app/view_components/ui/command_item_component.rb +12 -12
- data/app/view_components/ui/command_list_component.rb +10 -10
- data/app/view_components/ui/command_separator_component.rb +10 -10
- data/app/view_components/ui/command_shortcut_component.rb +10 -10
- data/app/view_components/ui/context_menu_checkbox_item_component.rb +36 -37
- data/app/view_components/ui/context_menu_component.rb +14 -14
- data/app/view_components/ui/context_menu_content_component.rb +14 -14
- data/app/view_components/ui/context_menu_item_component.rb +22 -22
- data/app/view_components/ui/context_menu_label_component.rb +16 -16
- data/app/view_components/ui/context_menu_radio_group_component.rb +13 -13
- data/app/view_components/ui/context_menu_radio_item_component.rb +36 -37
- data/app/view_components/ui/context_menu_separator_component.rb +11 -11
- data/app/view_components/ui/context_menu_shortcut_component.rb +13 -13
- data/app/view_components/ui/context_menu_trigger_component.rb +14 -14
- data/app/view_components/ui/date_picker_component.rb +125 -125
- data/app/view_components/ui/date_picker_input_component.rb +68 -68
- data/app/view_components/ui/date_picker_trigger_component.rb +67 -67
- data/app/view_components/ui/dialog_close_component.rb +61 -61
- data/app/view_components/ui/dialog_component.rb +45 -45
- data/app/view_components/ui/dialog_content_component.rb +23 -23
- data/app/view_components/ui/dialog_description_component.rb +21 -21
- data/app/view_components/ui/dialog_footer_component.rb +17 -17
- data/app/view_components/ui/dialog_header_component.rb +18 -18
- data/app/view_components/ui/dialog_overlay_component.rb +30 -30
- data/app/view_components/ui/dialog_title_component.rb +21 -21
- data/app/view_components/ui/dialog_trigger_component.rb +61 -61
- data/app/view_components/ui/drawer_close_component.rb +30 -30
- data/app/view_components/ui/drawer_component.rb +76 -76
- data/app/view_components/ui/drawer_content_component.rb +26 -26
- data/app/view_components/ui/drawer_description_component.rb +17 -17
- data/app/view_components/ui/drawer_footer_component.rb +20 -20
- data/app/view_components/ui/drawer_handle_component.rb +19 -19
- data/app/view_components/ui/drawer_header_component.rb +20 -20
- data/app/view_components/ui/drawer_overlay_component.rb +22 -22
- data/app/view_components/ui/drawer_title_component.rb +17 -17
- data/app/view_components/ui/drawer_trigger_component.rb +60 -60
- data/app/view_components/ui/dropdown_menu_checkbox_item_component.rb +26 -26
- data/app/view_components/ui/dropdown_menu_component.rb +45 -45
- data/app/view_components/ui/dropdown_menu_content_component.rb +13 -13
- data/app/view_components/ui/dropdown_menu_item_component.rb +16 -16
- data/app/view_components/ui/dropdown_menu_label_component.rb +13 -13
- data/app/view_components/ui/dropdown_menu_radio_group_component.rb +12 -12
- data/app/view_components/ui/dropdown_menu_radio_item_component.rb +27 -27
- data/app/view_components/ui/dropdown_menu_separator_component.rb +11 -11
- data/app/view_components/ui/dropdown_menu_shortcut_component.rb +12 -12
- data/app/view_components/ui/dropdown_menu_sub_component.rb +12 -12
- data/app/view_components/ui/dropdown_menu_sub_content_component.rb +14 -14
- data/app/view_components/ui/dropdown_menu_sub_trigger_component.rb +22 -22
- data/app/view_components/ui/dropdown_menu_trigger_component.rb +32 -48
- data/app/view_components/ui/empty_component.rb +12 -12
- data/app/view_components/ui/empty_content_component.rb +12 -12
- data/app/view_components/ui/empty_description_component.rb +12 -12
- data/app/view_components/ui/empty_header_component.rb +12 -12
- data/app/view_components/ui/empty_media_component.rb +13 -13
- data/app/view_components/ui/empty_title_component.rb +12 -12
- data/app/view_components/ui/field_component.rb +36 -36
- data/app/view_components/ui/field_content_component.rb +22 -22
- data/app/view_components/ui/field_description_component.rb +22 -22
- data/app/view_components/ui/field_error_component.rb +55 -55
- data/app/view_components/ui/field_group_component.rb +27 -27
- data/app/view_components/ui/field_label_component.rb +24 -24
- data/app/view_components/ui/field_legend_component.rb +29 -29
- data/app/view_components/ui/field_separator_component.rb +43 -43
- data/app/view_components/ui/field_set_component.rb +25 -25
- data/app/view_components/ui/field_title_component.rb +22 -22
- data/app/view_components/ui/h3_component.rb +1 -0
- data/app/view_components/ui/h4_component.rb +1 -0
- data/app/view_components/ui/hover_card_component.rb +24 -24
- data/app/view_components/ui/hover_card_content_component.rb +30 -30
- data/app/view_components/ui/hover_card_trigger_component.rb +47 -47
- data/app/view_components/ui/inline_code_component.rb +1 -0
- data/app/view_components/ui/input_component.rb +17 -17
- data/app/view_components/ui/input_group_addon_component.rb +31 -31
- data/app/view_components/ui/input_group_button_component.rb +47 -32
- data/app/view_components/ui/input_group_component.rb +30 -30
- data/app/view_components/ui/input_group_input_component.rb +38 -38
- data/app/view_components/ui/input_group_text_component.rb +28 -28
- data/app/view_components/ui/input_group_textarea_component.rb +38 -38
- data/app/view_components/ui/input_otp_component.rb +52 -52
- data/app/view_components/ui/input_otp_group_component.rb +23 -23
- data/app/view_components/ui/input_otp_separator_component.rb +29 -29
- data/app/view_components/ui/input_otp_slot_component.rb +28 -28
- data/app/view_components/ui/item_actions_component.rb +12 -12
- data/app/view_components/ui/item_component.rb +23 -23
- data/app/view_components/ui/item_content_component.rb +12 -12
- data/app/view_components/ui/item_description_component.rb +12 -12
- data/app/view_components/ui/item_footer_component.rb +12 -12
- data/app/view_components/ui/item_group_component.rb +12 -12
- data/app/view_components/ui/item_header_component.rb +12 -12
- data/app/view_components/ui/item_media_component.rb +13 -13
- data/app/view_components/ui/item_separator_component.rb +12 -12
- data/app/view_components/ui/item_title_component.rb +12 -12
- data/app/view_components/ui/kbd_component.rb +25 -25
- data/app/view_components/ui/kbd_group_component.rb +26 -26
- data/app/view_components/ui/label_component.rb +18 -18
- data/app/view_components/ui/large_component.rb +1 -0
- data/app/view_components/ui/lead_component.rb +1 -0
- data/app/view_components/ui/list_component.rb +1 -0
- data/app/view_components/ui/menubar_checkbox_item_component.rb +40 -40
- data/app/view_components/ui/menubar_component.rb +19 -19
- data/app/view_components/ui/menubar_content_component.rb +21 -21
- data/app/view_components/ui/menubar_item_component.rb +26 -26
- data/app/view_components/ui/menubar_label_component.rb +18 -18
- data/app/view_components/ui/menubar_menu_component.rb +20 -20
- data/app/view_components/ui/menubar_radio_group_component.rb +21 -21
- data/app/view_components/ui/menubar_radio_item_component.rb +41 -41
- data/app/view_components/ui/menubar_separator_component.rb +16 -16
- data/app/view_components/ui/menubar_shortcut_component.rb +17 -17
- data/app/view_components/ui/menubar_sub_component.rb +20 -20
- data/app/view_components/ui/menubar_sub_content_component.rb +20 -20
- data/app/view_components/ui/menubar_sub_trigger_component.rb +37 -37
- data/app/view_components/ui/menubar_trigger_component.rb +18 -18
- data/app/view_components/ui/muted_component.rb +1 -0
- data/app/view_components/ui/navigation_menu_component.rb +37 -37
- data/app/view_components/ui/navigation_menu_content_component.rb +18 -18
- data/app/view_components/ui/navigation_menu_item_component.rb +18 -18
- data/app/view_components/ui/navigation_menu_link_component.rb +83 -83
- data/app/view_components/ui/navigation_menu_list_component.rb +16 -16
- data/app/view_components/ui/navigation_menu_trigger_component.rb +38 -38
- data/app/view_components/ui/navigation_menu_viewport_component.rb +16 -16
- data/app/view_components/ui/p_component.rb +1 -0
- data/app/view_components/ui/pagination_component.rb +14 -14
- data/app/view_components/ui/pagination_content_component.rb +14 -14
- data/app/view_components/ui/pagination_ellipsis_component.rb +20 -20
- data/app/view_components/ui/pagination_item_component.rb +12 -12
- data/app/view_components/ui/pagination_link_component.rb +21 -21
- data/app/view_components/ui/pagination_next_component.rb +24 -24
- data/app/view_components/ui/pagination_previous_component.rb +25 -25
- data/app/view_components/ui/popover_component.rb +70 -49
- data/app/view_components/ui/popover_content_component.rb +36 -36
- data/app/view_components/ui/popover_trigger_component.rb +64 -59
- data/app/view_components/ui/progress_component.rb +33 -33
- data/app/view_components/ui/radio_button_component.rb +49 -49
- data/app/view_components/ui/resizable_handle_component.rb +27 -27
- data/app/view_components/ui/resizable_panel_component.rb +33 -33
- data/app/view_components/ui/resizable_panel_group_component.rb +39 -39
- data/app/view_components/ui/responsive_dialog_component.rb +70 -70
- data/app/view_components/ui/scroll_area_component.rb +39 -39
- data/app/view_components/ui/scroll_area_corner_component.rb +18 -18
- data/app/view_components/ui/scroll_area_scrollbar_component.rb +28 -28
- data/app/view_components/ui/scroll_area_thumb_component.rb +23 -23
- data/app/view_components/ui/scroll_area_viewport_component.rb +25 -25
- data/app/view_components/ui/select_component.rb +37 -26
- data/app/view_components/ui/select_content_component.rb +35 -36
- data/app/view_components/ui/select_group_component.rb +22 -22
- data/app/view_components/ui/select_item_component.rb +39 -40
- data/app/view_components/ui/select_label_component.rb +18 -18
- data/app/view_components/ui/select_scroll_down_button_component.rb +29 -29
- data/app/view_components/ui/select_scroll_up_button_component.rb +29 -29
- data/app/view_components/ui/select_trigger_component.rb +22 -22
- data/app/view_components/ui/separator_component.rb +23 -23
- data/app/view_components/ui/sheet_close_component.rb +61 -61
- data/app/view_components/ui/sheet_component.rb +45 -45
- data/app/view_components/ui/sheet_content_component.rb +43 -43
- data/app/view_components/ui/sheet_description_component.rb +20 -20
- data/app/view_components/ui/sheet_footer_component.rb +17 -17
- data/app/view_components/ui/sheet_header_component.rb +17 -17
- data/app/view_components/ui/sheet_overlay_component.rb +30 -30
- data/app/view_components/ui/sheet_title_component.rb +20 -20
- data/app/view_components/ui/sheet_trigger_component.rb +50 -50
- data/app/view_components/ui/skeleton_component.rb +23 -23
- data/app/view_components/ui/slider_component.rb +55 -55
- data/app/view_components/ui/slider_range_component.rb +19 -19
- data/app/view_components/ui/slider_thumb_component.rb +25 -25
- data/app/view_components/ui/slider_track_component.rb +22 -22
- data/app/view_components/ui/small_component.rb +1 -0
- data/app/view_components/ui/sonner_toaster_component.rb +49 -49
- data/app/view_components/ui/spinner_component.rb +41 -41
- data/app/view_components/ui/switch_component.rb +52 -52
- data/app/view_components/ui/table_body_component.rb +14 -14
- data/app/view_components/ui/table_caption_component.rb +10 -10
- data/app/view_components/ui/table_cell_component.rb +10 -10
- data/app/view_components/ui/table_component.rb +20 -20
- data/app/view_components/ui/table_footer_component.rb +14 -14
- data/app/view_components/ui/table_head_component.rb +10 -10
- data/app/view_components/ui/table_header_component.rb +14 -14
- data/app/view_components/ui/table_row_component.rb +16 -16
- data/app/view_components/ui/tabs_component.rb +33 -33
- data/app/view_components/ui/tabs_content_component.rb +28 -28
- data/app/view_components/ui/tabs_list_component.rb +24 -24
- data/app/view_components/ui/tabs_trigger_component.rb +31 -31
- data/app/view_components/ui/textarea_component.rb +14 -14
- data/app/view_components/ui/toggle_component.rb +43 -43
- data/app/view_components/ui/toggle_group_component.rb +60 -60
- data/app/view_components/ui/toggle_group_item_component.rb +62 -62
- data/app/view_components/ui/tooltip_component.rb +44 -13
- data/app/view_components/ui/tooltip_content_component.rb +23 -23
- data/app/view_components/ui/tooltip_trigger_component.rb +38 -18
- data/app/views/ui/_avatar.html.erb +8 -4
- data/app/views/ui/_button.html.erb +16 -0
- data/app/views/ui/_command.html.erb +2 -0
- data/app/views/ui/_date_picker.html.erb +4 -4
- data/app/views/ui/_popover.html.erb +30 -4
- data/app/views/ui/_select.html.erb +13 -2
- data/app/views/ui/_skeleton.html.erb +1 -1
- data/app/views/ui/_tooltip.html.erb +28 -2
- data/app/views/ui/carousel/_next.html.erb +1 -1
- data/app/views/ui/carousel/_previous.html.erb +1 -1
- data/app/views/ui/dropdown_menu/_trigger.html.erb +3 -1
- data/app/views/ui/input_group/_button.html.erb +14 -3
- data/app/views/ui/popover/_trigger.html.erb +22 -2
- data/app/views/ui/tooltip/_trigger.html.erb +16 -21
- data/lib/ui/version.rb +1 -1
- metadata +2 -1
|
@@ -2,22 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
require "tailwind_merge"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
# UI::InlineCodeBehavior
|
|
6
|
+
#
|
|
7
|
+
# @ui_component Inline Code
|
|
8
|
+
# @ui_category typography
|
|
9
|
+
#
|
|
10
|
+
# @ui_anatomy Inline Code - Inline Code component part (required)
|
|
11
|
+
#
|
|
12
|
+
# @ui_feature Custom styling with Tailwind classes
|
|
13
|
+
#
|
|
14
|
+
module UI::InlineCodeBehavior
|
|
15
|
+
# Base CSS classes for InlineCode
|
|
16
|
+
def inline_code_base_classes
|
|
17
|
+
"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold"
|
|
18
|
+
end
|
|
11
19
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
# Merge base classes with custom classes using TailwindMerge
|
|
21
|
+
def inline_code_classes
|
|
22
|
+
TailwindMerge::Merger.new.merge([inline_code_base_classes, @classes].compact.join(" "))
|
|
23
|
+
end
|
|
16
24
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
# Build complete HTML attributes hash
|
|
26
|
+
def inline_code_html_attributes
|
|
27
|
+
{
|
|
28
|
+
class: inline_code_classes
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -1,52 +1,62 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
3
|
+
# UI::InputBehavior
|
|
4
|
+
#
|
|
5
|
+
# @ui_component Input
|
|
6
|
+
# @ui_category forms
|
|
7
|
+
#
|
|
8
|
+
# @ui_anatomy Input - Text input field (required)
|
|
9
|
+
# @ui_anatomy Group - A wrapper component for grouping inputs with addons, buttons, and text.
|
|
10
|
+
#
|
|
11
|
+
# @ui_feature Custom styling with Tailwind classes
|
|
12
|
+
# @ui_feature Form integration
|
|
13
|
+
# @ui_feature Disabled state support
|
|
14
|
+
# @ui_feature ARIA attributes for accessibility
|
|
15
|
+
#
|
|
16
|
+
# @ui_related textarea
|
|
17
|
+
# @ui_related field
|
|
18
|
+
#
|
|
19
|
+
module UI::InputBehavior
|
|
20
|
+
# Returns HTML attributes for the input element
|
|
21
|
+
def input_html_attributes
|
|
22
|
+
{
|
|
23
|
+
type: @type,
|
|
24
|
+
class: input_classes,
|
|
25
|
+
placeholder: @placeholder,
|
|
26
|
+
value: @value,
|
|
27
|
+
name: @name,
|
|
28
|
+
id: @id,
|
|
29
|
+
readonly: @readonly,
|
|
30
|
+
data: {slot: "input"}
|
|
31
|
+
}.compact
|
|
32
|
+
end
|
|
22
33
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
# Returns combined CSS classes for the input
|
|
35
|
+
def input_classes
|
|
36
|
+
classes_value = respond_to?(:classes, true) ? classes : @classes
|
|
37
|
+
TailwindMerge::Merger.new.merge([
|
|
38
|
+
input_base_classes,
|
|
39
|
+
input_focus_classes,
|
|
40
|
+
input_validation_classes,
|
|
41
|
+
classes_value
|
|
31
42
|
|
|
32
|
-
|
|
33
|
-
|
|
43
|
+
].compact.join(" "))
|
|
44
|
+
end
|
|
34
45
|
|
|
35
|
-
|
|
46
|
+
private
|
|
36
47
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
# Base classes applied to all inputs (from shadcn/ui)
|
|
49
|
+
def input_base_classes
|
|
50
|
+
"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm"
|
|
51
|
+
end
|
|
41
52
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
# Focus state classes
|
|
54
|
+
def input_focus_classes
|
|
55
|
+
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]"
|
|
56
|
+
end
|
|
46
57
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
end
|
|
58
|
+
# Validation state classes
|
|
59
|
+
def input_validation_classes
|
|
60
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
|
|
51
61
|
end
|
|
52
62
|
end
|
|
@@ -2,8 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
# UI::InputGroupAddonBehavior
|
|
4
4
|
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
5
|
+
# @ui_component Input Group Addon
|
|
6
|
+
# @ui_description Addon - Phlex implementation
|
|
7
|
+
# @ui_category other
|
|
8
|
+
#
|
|
9
|
+
# @ui_anatomy Input Group Addon - An addon element for input groups that can contain text, icons, or other elements. (required)
|
|
10
|
+
#
|
|
11
|
+
# @ui_feature Custom styling with Tailwind classes
|
|
12
|
+
# @ui_feature Disabled state support
|
|
13
|
+
#
|
|
7
14
|
module UI::InputGroupAddonBehavior
|
|
8
15
|
# Returns HTML attributes for the addon element
|
|
9
16
|
def input_group_addon_html_attributes
|
|
@@ -32,8 +32,9 @@ module UI::InputGroupBehavior
|
|
|
32
32
|
private
|
|
33
33
|
|
|
34
34
|
# Base classes - exact match from shadcn/ui
|
|
35
|
+
# Uses CSS variable --radius for customizable border radius (defaults to 0.375rem / rounded-md)
|
|
35
36
|
def input_group_base_classes
|
|
36
|
-
"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-
|
|
37
|
+
"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-[var(--radius,0.375rem)] border shadow-xs transition-[color,box-shadow] outline-none"
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
# Height classes
|
|
@@ -52,6 +53,7 @@ module UI::InputGroupBehavior
|
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
# Focus state classes
|
|
56
|
+
# Uses box-shadow for focus ring which automatically follows border-radius
|
|
55
57
|
def input_group_focus_classes
|
|
56
58
|
"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]"
|
|
57
59
|
end
|
|
@@ -2,8 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
# UI::InputGroupButtonBehavior
|
|
4
4
|
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
5
|
+
# @ui_component Input Group Button
|
|
6
|
+
# @ui_description Button - Phlex implementation
|
|
7
|
+
# @ui_category other
|
|
8
|
+
#
|
|
9
|
+
# @ui_anatomy Input Group Button - A button component specifically styled for use within input groups. (required)
|
|
10
|
+
#
|
|
11
|
+
# @ui_feature Custom styling with Tailwind classes
|
|
12
|
+
# @ui_feature Disabled state support
|
|
13
|
+
#
|
|
7
14
|
module UI::InputGroupButtonBehavior
|
|
8
15
|
# Returns HTML attributes for the input group button
|
|
9
16
|
def input_group_button_html_attributes
|
|
@@ -18,7 +25,7 @@ module UI::InputGroupButtonBehavior
|
|
|
18
25
|
variant: @variant,
|
|
19
26
|
classes: input_group_button_classes,
|
|
20
27
|
"data-size": @size
|
|
21
|
-
}.
|
|
28
|
+
}.deep_merge(attributes_value).compact
|
|
22
29
|
end
|
|
23
30
|
|
|
24
31
|
# Returns combined CSS classes for the button
|
|
@@ -65,18 +72,19 @@ module UI::InputGroupButtonBehavior
|
|
|
65
72
|
end
|
|
66
73
|
|
|
67
74
|
# Size-specific classes
|
|
75
|
+
# Uses calc(var(--radius, 0.375rem) - 5px) to create slightly smaller rounded corners for nested buttons
|
|
68
76
|
def input_group_button_size_classes
|
|
69
77
|
case @size.to_s
|
|
70
78
|
when "xs"
|
|
71
|
-
"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2"
|
|
79
|
+
"h-6 gap-1 px-2 rounded-[calc(var(--radius,0.375rem)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2"
|
|
72
80
|
when "sm"
|
|
73
|
-
"h-8 px-2.5 gap-1.5 rounded-
|
|
81
|
+
"h-8 px-2.5 gap-1.5 rounded-[calc(var(--radius,0.375rem)-5px)] has-[>svg]:px-2.5"
|
|
74
82
|
when "icon-xs"
|
|
75
|
-
"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0"
|
|
83
|
+
"size-6 rounded-[calc(var(--radius,0.375rem)-5px)] p-0 has-[>svg]:p-0"
|
|
76
84
|
when "icon-sm"
|
|
77
|
-
"size-8 p-0 has-[>svg]:p-0"
|
|
85
|
+
"size-8 rounded-[calc(var(--radius,0.375rem)-5px)] p-0 has-[>svg]:p-0"
|
|
78
86
|
else
|
|
79
|
-
"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2"
|
|
87
|
+
"h-6 gap-1 px-2 rounded-[calc(var(--radius,0.375rem)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2"
|
|
80
88
|
end
|
|
81
89
|
end
|
|
82
90
|
end
|
|
@@ -15,7 +15,7 @@ module UI::InputGroupInputBehavior
|
|
|
15
15
|
attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
|
|
16
16
|
# Merge data-slot to override the default "input" slot with "input-group-control"
|
|
17
17
|
# For Phlex: merge at top level, for ERB/VC: merge inside attributes hash
|
|
18
|
-
data_slot_override = {
|
|
18
|
+
data_slot_override = {data: {slot: "input-group-control"}}
|
|
19
19
|
|
|
20
20
|
# Merge the data-slot both at top level (for Phlex) and in attributes (for ERB/VC)
|
|
21
21
|
merged_attrs = attributes_value.deep_merge(data_slot_override)
|
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
# UI::InputGroupTextareaBehavior
|
|
4
4
|
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
5
|
+
# @ui_component Input Group Textarea
|
|
6
|
+
# @ui_description Textarea - Phlex implementation
|
|
7
|
+
# @ui_category other
|
|
8
|
+
#
|
|
9
|
+
# @ui_anatomy Input Group Textarea - A textarea element styled for use within input groups. (required)
|
|
10
|
+
#
|
|
11
|
+
# @ui_feature Custom styling with Tailwind classes
|
|
12
|
+
#
|
|
7
13
|
module UI::InputGroupTextareaBehavior
|
|
8
14
|
# Returns HTML attributes for the input group textarea
|
|
9
15
|
def input_group_textarea_html_attributes
|
|
@@ -15,7 +21,7 @@ module UI::InputGroupTextareaBehavior
|
|
|
15
21
|
attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
|
|
16
22
|
# Merge data-slot to override the default textarea slot with "input-group-control"
|
|
17
23
|
# For Phlex: merge at top level, for ERB/VC: merge inside attributes hash
|
|
18
|
-
data_slot_override = {
|
|
24
|
+
data_slot_override = {data: {slot: "input-group-control"}}
|
|
19
25
|
|
|
20
26
|
# Merge the data-slot both at top level (for Phlex) and in attributes (for ERB/VC)
|
|
21
27
|
merged_attrs = attributes_value.deep_merge(data_slot_override)
|
|
@@ -2,43 +2,57 @@
|
|
|
2
2
|
|
|
3
3
|
require "tailwind_merge"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
# UI::InputOtpBehavior
|
|
6
|
+
#
|
|
7
|
+
# @ui_component Input OTP
|
|
8
|
+
# @ui_description InputOtp - Phlex implementation
|
|
9
|
+
# @ui_category forms
|
|
10
|
+
#
|
|
11
|
+
# @ui_anatomy Input OTP - Accessible one-time password container component. (required)
|
|
12
|
+
# @ui_anatomy Group - Container for grouping OTP input slots together visually.
|
|
13
|
+
# @ui_anatomy Separator - Visual divider between OTP input groups.
|
|
14
|
+
#
|
|
15
|
+
# @ui_feature Custom styling with Tailwind classes
|
|
16
|
+
# @ui_feature Disabled state support
|
|
17
|
+
#
|
|
18
|
+
# @ui_keyboard ArrowLeft Moves focus left or decreases value
|
|
19
|
+
# @ui_keyboard ArrowRight Moves focus right or increases value
|
|
20
|
+
# @ui_keyboard Home Moves focus to first item
|
|
21
|
+
# @ui_keyboard End Moves focus to last item
|
|
22
|
+
#
|
|
23
|
+
module UI::InputOtpBehavior
|
|
24
|
+
# Returns HTML attributes for the input OTP container element
|
|
25
|
+
def input_otp_html_attributes
|
|
26
|
+
attrs = {
|
|
27
|
+
class: input_otp_classes,
|
|
28
|
+
data: input_otp_data_attributes
|
|
29
|
+
}
|
|
30
|
+
attrs[:id] = @id if @id
|
|
31
|
+
attrs
|
|
32
|
+
end
|
|
19
33
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
34
|
+
# Returns combined CSS classes for the input OTP container
|
|
35
|
+
def input_otp_classes
|
|
36
|
+
classes_value = respond_to?(:classes, true) ? classes : @classes
|
|
37
|
+
TailwindMerge::Merger.new.merge([
|
|
38
|
+
input_otp_base_classes,
|
|
39
|
+
classes_value
|
|
40
|
+
].compact.join(" "))
|
|
41
|
+
end
|
|
28
42
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
# Returns data attributes for Stimulus controller
|
|
44
|
+
def input_otp_data_attributes
|
|
45
|
+
{
|
|
46
|
+
controller: "ui--input-otp",
|
|
47
|
+
ui__input_otp_length_value: @length,
|
|
48
|
+
ui__input_otp_pattern_value: @pattern
|
|
49
|
+
}.compact
|
|
50
|
+
end
|
|
37
51
|
|
|
38
|
-
|
|
52
|
+
private
|
|
39
53
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
54
|
+
# Base classes applied to all input OTP containers
|
|
55
|
+
def input_otp_base_classes
|
|
56
|
+
"flex items-center gap-2 has-[:disabled]:opacity-50"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -2,31 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
require "tailwind_merge"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
# InputOtpGroupBehavior
|
|
6
|
+
#
|
|
7
|
+
# Shared behavior for InputOtpGroup component across ERB, ViewComponent, and Phlex implementations.
|
|
8
|
+
# This module provides consistent HTML attribute generation for grouping OTP slots.
|
|
9
|
+
module UI::InputOtpGroupBehavior
|
|
10
|
+
# Returns HTML attributes for the input OTP group element
|
|
11
|
+
def input_otp_group_html_attributes
|
|
12
|
+
{
|
|
13
|
+
class: input_otp_group_classes
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
# Returns combined CSS classes for the input OTP group
|
|
18
|
+
def input_otp_group_classes
|
|
19
|
+
classes_value = respond_to?(:classes, true) ? classes : @classes
|
|
20
|
+
TailwindMerge::Merger.new.merge([
|
|
21
|
+
input_otp_group_base_classes,
|
|
22
|
+
classes_value
|
|
23
|
+
].compact.join(" "))
|
|
24
|
+
end
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
private
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
# Base classes applied to all input OTP groups
|
|
29
|
+
def input_otp_group_base_classes
|
|
30
|
+
"flex items-center"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -2,32 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
require "tailwind_merge"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
5
|
+
# InputOtpSeparatorBehavior
|
|
6
|
+
#
|
|
7
|
+
# Shared behavior for InputOtpSeparator component across ERB, ViewComponent, and Phlex implementations.
|
|
8
|
+
# This module provides consistent HTML attribute generation for OTP slot separators.
|
|
9
|
+
module UI::InputOtpSeparatorBehavior
|
|
10
|
+
# Returns HTML attributes for the input OTP separator element
|
|
11
|
+
def input_otp_separator_html_attributes
|
|
12
|
+
{
|
|
13
|
+
class: input_otp_separator_classes,
|
|
14
|
+
role: "separator"
|
|
15
|
+
}
|
|
16
|
+
end
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
# Returns combined CSS classes for the input OTP separator
|
|
19
|
+
def input_otp_separator_classes
|
|
20
|
+
classes_value = respond_to?(:classes, true) ? classes : @classes
|
|
21
|
+
TailwindMerge::Merger.new.merge([
|
|
22
|
+
input_otp_separator_base_classes,
|
|
23
|
+
classes_value
|
|
24
|
+
].compact.join(" "))
|
|
25
|
+
end
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
private
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
# Base classes applied to all input OTP separators
|
|
30
|
+
def input_otp_separator_base_classes
|
|
31
|
+
"flex items-center justify-center"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -2,48 +2,56 @@
|
|
|
2
2
|
|
|
3
3
|
require "tailwind_merge"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
5
|
+
# UI::InputOtpSlotBehavior
|
|
6
|
+
#
|
|
7
|
+
# @ui_component Input OTP Slot
|
|
8
|
+
# @ui_description Slot - Phlex implementation
|
|
9
|
+
# @ui_category other
|
|
10
|
+
#
|
|
11
|
+
# @ui_anatomy Input OTP Slot - Individual OTP input slot for a single character. (required)
|
|
12
|
+
#
|
|
13
|
+
# @ui_feature Keyboard navigation
|
|
14
|
+
# @ui_feature Custom styling with Tailwind classes
|
|
15
|
+
# @ui_feature Disabled state support
|
|
16
|
+
#
|
|
17
|
+
module UI::InputOtpSlotBehavior
|
|
18
|
+
# Returns HTML attributes for the input OTP slot element
|
|
19
|
+
def input_otp_slot_html_attributes
|
|
20
|
+
{
|
|
21
|
+
type: "text",
|
|
22
|
+
maxlength: 1,
|
|
23
|
+
inputmode: "numeric",
|
|
24
|
+
autocomplete: "one-time-code",
|
|
25
|
+
value: @value,
|
|
26
|
+
name: @name,
|
|
27
|
+
id: @id,
|
|
28
|
+
disabled: @disabled,
|
|
29
|
+
class: input_otp_slot_classes,
|
|
30
|
+
data: input_otp_slot_data_attributes
|
|
31
|
+
}.compact
|
|
32
|
+
end
|
|
25
33
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
# Returns combined CSS classes for the input OTP slot
|
|
35
|
+
def input_otp_slot_classes
|
|
36
|
+
classes_value = respond_to?(:classes, true) ? classes : @classes
|
|
37
|
+
TailwindMerge::Merger.new.merge([
|
|
38
|
+
input_otp_slot_base_classes,
|
|
39
|
+
classes_value
|
|
40
|
+
].compact.join(" "))
|
|
41
|
+
end
|
|
34
42
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
# Returns data attributes for Stimulus integration
|
|
44
|
+
def input_otp_slot_data_attributes
|
|
45
|
+
{
|
|
46
|
+
ui__input_otp_target: "input",
|
|
47
|
+
action: "input->ui--input-otp#input keydown->ui--input-otp#keydown paste->ui--input-otp#paste"
|
|
48
|
+
}
|
|
49
|
+
end
|
|
42
50
|
|
|
43
|
-
|
|
51
|
+
private
|
|
44
52
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
# Base classes applied to all input OTP slots (from shadcn/ui)
|
|
54
|
+
def input_otp_slot_base_classes
|
|
55
|
+
"border-input relative flex size-9 items-center justify-center border-y border-r text-sm text-center shadow-xs transition-all first:rounded-l-md first:border-l last:rounded-r-md focus:z-10 focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50"
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -1,31 +1,37 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# ItemActionsBehavior
|
|
3
|
-
#
|
|
4
|
-
# Shared behavior for Item actions container across ERB, ViewComponent, and Phlex implementations.
|
|
5
|
-
# This module provides consistent HTML attribute generation and styling.
|
|
6
|
-
module UI::ItemActionsBehavior
|
|
7
|
-
# Returns HTML attributes for the item actions element
|
|
8
|
-
def item_actions_html_attributes
|
|
9
|
-
attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
|
|
10
|
-
{
|
|
11
|
-
class: item_actions_classes
|
|
12
|
-
}.merge(attributes_value || {})
|
|
13
|
-
end
|
|
14
2
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
3
|
+
# UI::ItemActionsBehavior
|
|
4
|
+
#
|
|
5
|
+
# @ui_component Item Actions
|
|
6
|
+
# @ui_category other
|
|
7
|
+
#
|
|
8
|
+
# @ui_anatomy Item Actions - Individual item element (required)
|
|
9
|
+
#
|
|
10
|
+
# @ui_feature Custom styling with Tailwind classes
|
|
11
|
+
#
|
|
12
|
+
module UI::ItemActionsBehavior
|
|
13
|
+
# Returns HTML attributes for the item actions element
|
|
14
|
+
def item_actions_html_attributes
|
|
15
|
+
attributes_value = respond_to?(:attributes, true) ? attributes : @attributes
|
|
16
|
+
{
|
|
17
|
+
class: item_actions_classes
|
|
18
|
+
}.merge(attributes_value || {})
|
|
19
|
+
end
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
# Returns combined CSS classes
|
|
22
|
+
def item_actions_classes
|
|
23
|
+
classes_value = respond_to?(:classes, true) ? classes : @classes
|
|
24
|
+
TailwindMerge::Merger.new.merge([
|
|
25
|
+
item_actions_base_classes,
|
|
26
|
+
classes_value
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
].compact.join(" "))
|
|
29
|
+
end
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
# Base classes for item actions (from shadcn/ui v4)
|
|
34
|
+
def item_actions_base_classes
|
|
35
|
+
"flex shrink-0 items-center gap-2"
|
|
36
|
+
end
|
|
37
|
+
end
|