From a816b211a03f8df423c209296ee33a96239e3ff6 Mon Sep 17 00:00:00 2001 From: Seth Horsley Date: Tue, 5 Nov 2024 02:05:21 +0100 Subject: [PATCH 1/4] RBUI -> RubyUI --- LICENSE.txt | 2 +- README.md | 12 ++--- lib/generators/rbui/base_generator.rb | 2 +- lib/generators/rbui/component_generator.rb | 4 +- .../rbui/install/install_generator.rb | 14 ++--- .../templates/base_store_initializer.rb.tt | 10 ++-- .../rbui/install/templates/index.js.tt | 4 +- .../rbui/install/templates/index_view.rb.tt | 2 +- .../install/templates/tailwind.config.js.tt | 4 +- lib/rbui.rb | 2 +- lib/{rbui => ruby_ui}/accordion/accordion.rb | 2 +- .../accordion/accordion_content.rb | 2 +- .../accordion/accordion_controller.js | 0 .../accordion/accordion_default_content.rb | 2 +- .../accordion/accordion_default_trigger.rb | 4 +- .../accordion/accordion_icon.rb | 2 +- .../accordion/accordion_item.rb | 2 +- .../accordion/accordion_trigger.rb | 2 +- lib/{rbui => ruby_ui}/alert/alert.rb | 2 +- .../alert/alert_description.rb | 2 +- lib/{rbui => ruby_ui}/alert/alert_title.rb | 2 +- .../alert_dialog/alert_dialog.rb | 2 +- .../alert_dialog/alert_dialog_action.rb | 4 +- .../alert_dialog/alert_dialog_cancel.rb | 4 +- .../alert_dialog/alert_dialog_content.rb | 2 +- .../alert_dialog/alert_dialog_controller.js | 0 .../alert_dialog/alert_dialog_description.rb | 2 +- .../alert_dialog/alert_dialog_footer.rb | 2 +- .../alert_dialog/alert_dialog_header.rb | 2 +- .../alert_dialog/alert_dialog_title.rb | 2 +- .../alert_dialog/alert_dialog_trigger.rb | 2 +- .../aspect_ratio/aspect_ratio.rb | 2 +- lib/{rbui => ruby_ui}/avatar/avatar.rb | 2 +- .../avatar/avatar_fallback.rb | 2 +- lib/{rbui => ruby_ui}/avatar/avatar_image.rb | 2 +- lib/{rbui => ruby_ui}/badge/badge.rb | 2 +- lib/{rbui => ruby_ui}/base.rb | 2 +- lib/{rbui => ruby_ui}/button/button.rb | 2 +- lib/{rbui => ruby_ui}/calendar/calendar.rb | 16 +++--- .../calendar/calendar_body.rb | 2 +- .../calendar/calendar_controller.js | 0 .../calendar/calendar_days.rb | 2 +- .../calendar/calendar_header.rb | 2 +- .../calendar/calendar_input_controller.js | 0 .../calendar/calendar_next.rb | 2 +- .../calendar/calendar_prev.rb | 2 +- .../calendar/calendar_title.rb | 2 +- .../calendar/calendar_weekdays.rb | 2 +- lib/{rbui => ruby_ui}/card/card.rb | 2 +- lib/{rbui => ruby_ui}/card/card_content.rb | 2 +- .../card/card_description.rb | 2 +- lib/{rbui => ruby_ui}/card/card_footer.rb | 2 +- lib/{rbui => ruby_ui}/card/card_header.rb | 2 +- lib/{rbui => ruby_ui}/card/card_title.rb | 2 +- lib/{rbui => ruby_ui}/chart/chart.rb | 2 +- .../chart/chart_controller.js | 0 lib/{rbui => ruby_ui}/checkbox/checkbox.rb | 2 +- .../checkbox/checkbox_group.rb | 2 +- .../checkbox/checkbox_group_controller.js | 0 lib/{rbui => ruby_ui}/clipboard/clipboard.rb | 2 +- .../clipboard/clipboard_controller.js | 0 .../clipboard/clipboard_popover.rb | 2 +- .../clipboard/clipboard_source.rb | 2 +- .../clipboard/clipboard_trigger.rb | 2 +- lib/{rbui => ruby_ui}/codeblock/codeblock.rb | 10 ++-- .../collapsible/collapsible.rb | 2 +- .../collapsible/collapsible_content.rb | 2 +- .../collapsible/collapsible_controller.js | 0 .../collapsible/collapsible_trigger.rb | 2 +- lib/{rbui => ruby_ui}/combobox/combobox.rb | 2 +- .../combobox/combobox_content.rb | 2 +- .../combobox/combobox_content_controller.js | 0 .../combobox/combobox_controller.js | 0 .../combobox/combobox_empty.rb | 2 +- .../combobox/combobox_group.rb | 2 +- .../combobox/combobox_input.rb | 2 +- .../combobox/combobox_item.rb | 2 +- .../combobox/combobox_item_controller.js | 0 .../combobox/combobox_list.rb | 2 +- .../combobox/combobox_search_input.rb | 2 +- .../combobox/combobox_separator.rb | 2 +- .../combobox/combobox_trigger.rb | 2 +- .../combobox/combobox_value.rb | 2 +- lib/{rbui => ruby_ui}/command/command.rb | 2 +- .../command/command_controller.js | 0 .../command/command_dialog.rb | 2 +- .../command/command_dialog_content.rb | 2 +- .../command/command_dialog_trigger.rb | 2 +- .../command/command_empty.rb | 2 +- .../command/command_group.rb | 2 +- .../command/command_input.rb | 2 +- lib/{rbui => ruby_ui}/command/command_item.rb | 2 +- lib/{rbui => ruby_ui}/command/command_list.rb | 2 +- .../context_menu/context_menu.rb | 2 +- .../context_menu/context_menu_content.rb | 2 +- .../context_menu/context_menu_controller.js | 0 .../context_menu/context_menu_item.rb | 2 +- .../context_menu/context_menu_label.rb | 2 +- .../context_menu/context_menu_separator.rb | 2 +- .../context_menu/context_menu_trigger.rb | 2 +- lib/{rbui => ruby_ui}/dialog/dialog.rb | 2 +- .../dialog/dialog_content.rb | 2 +- .../dialog/dialog_controller.js | 0 .../dialog/dialog_description.rb | 2 +- lib/{rbui => ruby_ui}/dialog/dialog_footer.rb | 2 +- lib/{rbui => ruby_ui}/dialog/dialog_header.rb | 2 +- lib/{rbui => ruby_ui}/dialog/dialog_middle.rb | 2 +- lib/{rbui => ruby_ui}/dialog/dialog_title.rb | 2 +- .../dialog/dialog_trigger.rb | 2 +- .../dropdown_menu/dropdown_menu.rb | 2 +- .../dropdown_menu/dropdown_menu_content.rb | 2 +- .../dropdown_menu/dropdown_menu_controller.js | 0 .../dropdown_menu/dropdown_menu_item.rb | 2 +- .../dropdown_menu/dropdown_menu_label.rb | 2 +- .../dropdown_menu/dropdown_menu_separator.rb | 2 +- .../dropdown_menu/dropdown_menu_trigger.rb | 2 +- lib/{rbui => ruby_ui}/form/form.rb | 2 +- lib/{rbui => ruby_ui}/form/form_field.rb | 2 +- .../form/form_field_controller.js | 0 .../form/form_field_error.rb | 2 +- lib/{rbui => ruby_ui}/form/form_field_hint.rb | 2 +- .../form/form_field_label.rb | 2 +- .../hover_card/hover_card.rb | 2 +- .../hover_card/hover_card_content.rb | 2 +- .../hover_card/hover_card_controller.js | 0 .../hover_card/hover_card_trigger.rb | 2 +- lib/{rbui => ruby_ui}/index.js | 4 +- lib/{rbui => ruby_ui}/input/input.rb | 2 +- lib/{rbui => ruby_ui}/link/link.rb | 2 +- .../pagination/pagination.rb | 2 +- .../pagination/pagination_content.rb | 2 +- .../pagination/pagination_ellipsis.rb | 2 +- .../pagination/pagination_item.rb | 4 +- lib/{rbui => ruby_ui}/popover/popover.rb | 2 +- .../popover/popover_content.rb | 2 +- .../popover/popover_controller.js | 0 .../popover/popover_trigger.rb | 2 +- .../radio_button/radio_button.rb | 2 +- lib/{rbui => ruby_ui}/railtie.rb | 18 +++---- lib/{rbui => ruby_ui}/select/select.rb | 2 +- .../select/select_content.rb | 2 +- .../select/select_controller.js | 0 lib/{rbui => ruby_ui}/select/select_group.rb | 2 +- lib/{rbui => ruby_ui}/select/select_input.rb | 2 +- lib/{rbui => ruby_ui}/select/select_item.rb | 2 +- .../select/select_item_controller.js | 0 lib/{rbui => ruby_ui}/select/select_label.rb | 2 +- .../select/select_trigger.rb | 2 +- lib/{rbui => ruby_ui}/select/select_value.rb | 2 +- lib/{rbui => ruby_ui}/sheet/sheet.rb | 2 +- lib/{rbui => ruby_ui}/sheet/sheet_content.rb | 2 +- .../sheet/sheet_content_controller.js | 0 .../sheet/sheet_controller.js | 0 .../sheet/sheet_description.rb | 2 +- lib/{rbui => ruby_ui}/sheet/sheet_footer.rb | 2 +- lib/{rbui => ruby_ui}/sheet/sheet_header.rb | 2 +- lib/{rbui => ruby_ui}/sheet/sheet_middle.rb | 2 +- lib/{rbui => ruby_ui}/sheet/sheet_title.rb | 2 +- lib/{rbui => ruby_ui}/sheet/sheet_trigger.rb | 2 +- .../shortcut_key/shortcut_key.rb | 2 +- lib/{rbui => ruby_ui}/table/table.rb | 2 +- lib/{rbui => ruby_ui}/table/table_body.rb | 2 +- lib/{rbui => ruby_ui}/table/table_caption.rb | 2 +- lib/{rbui => ruby_ui}/table/table_cell.rb | 2 +- lib/{rbui => ruby_ui}/table/table_footer.rb | 2 +- lib/{rbui => ruby_ui}/table/table_head.rb | 2 +- lib/{rbui => ruby_ui}/table/table_header.rb | 2 +- lib/{rbui => ruby_ui}/table/table_row.rb | 2 +- lib/{rbui => ruby_ui}/tabs/tabs.rb | 2 +- lib/{rbui => ruby_ui}/tabs/tabs_content.rb | 2 +- lib/{rbui => ruby_ui}/tabs/tabs_controller.js | 0 lib/{rbui => ruby_ui}/tabs/tabs_list.rb | 2 +- lib/{rbui => ruby_ui}/tabs/tabs_trigger.rb | 2 +- lib/{rbui => ruby_ui}/textarea/textarea.rb | 2 +- .../theme_toggle/theme_toggle.rb | 2 +- .../theme_toggle/theme_toggle_controller.js | 0 lib/{rbui => ruby_ui}/tooltip/tooltip.rb | 2 +- .../tooltip/tooltip_content.rb | 2 +- .../tooltip/tooltip_controller.js | 0 .../tooltip/tooltip_trigger.rb | 2 +- lib/{rbui => ruby_ui}/typography/heading.rb | 2 +- .../typography/inline_code.rb | 2 +- .../typography/inline_link.rb | 2 +- lib/{rbui => ruby_ui}/typography/text.rb | 2 +- .../typography/typography_blockquote.rb | 2 +- lib/{rbui => ruby_ui}/version.rb | 2 +- ruby_ui.gemspec | 2 +- test/rbui/alert_dialog_test.rb | 29 ----------- test/rbui/calendar_test.rb | 16 ------ test/rbui/card_test.rb | 33 ------------ test/rbui/combobox_test.rb | 51 ------------------- test/rbui/context_menu_test.rb | 31 ----------- test/rbui/dialog_test.rb | 38 -------------- test/rbui/dropdown_menu_test.rb | 27 ---------- test/rbui/form_test.rb | 22 -------- test/rbui/hover_card_test.rb | 27 ---------- test/rbui/pagination_test.rb | 39 -------------- test/rbui/popover_test.rb | 30 ----------- test/rbui/setup_test.rb | 31 ----------- test/rbui/sheet_test.rb | 35 ------------- test/rbui/table_test.rb | 48 ----------------- test/rbui/tabs_test.rb | 29 ----------- test/{rbui => ruby_ui}/accordion_test.rb | 36 ++++++------- test/ruby_ui/alert_dialog_test.rb | 29 +++++++++++ test/{rbui => ruby_ui}/alert_test.rb | 8 +-- test/{rbui => ruby_ui}/aspect_ratio_test.rb | 4 +- test/{rbui => ruby_ui}/avatar_test.rb | 8 +-- test/{rbui => ruby_ui}/badge_test.rb | 4 +- test/{rbui => ruby_ui}/button_test.rb | 4 +- test/ruby_ui/calendar_test.rb | 16 ++++++ test/ruby_ui/card_test.rb | 33 ++++++++++++ test/{rbui => ruby_ui}/chart_test.rb | 4 +- test/{rbui => ruby_ui}/checkbox_test.rb | 4 +- test/{rbui => ruby_ui}/clipboard_test.rb | 4 +- test/{rbui => ruby_ui}/codeblock_test.rb | 4 +- test/{rbui => ruby_ui}/collapsible_test.rb | 10 ++-- test/ruby_ui/combobox_test.rb | 51 +++++++++++++++++++ test/{rbui => ruby_ui}/command_test.rb | 28 +++++----- test/ruby_ui/context_menu_test.rb | 31 +++++++++++ test/ruby_ui/dialog_test.rb | 38 ++++++++++++++ test/ruby_ui/dropdown_menu_test.rb | 27 ++++++++++ test/ruby_ui/form_test.rb | 22 ++++++++ test/ruby_ui/hover_card_test.rb | 27 ++++++++++ test/{rbui => ruby_ui}/inline_code_test.rb | 4 +- test/{rbui => ruby_ui}/inline_link_test.rb | 4 +- test/{rbui => ruby_ui}/input_test.rb | 6 +-- test/{rbui => ruby_ui}/link_test.rb | 4 +- test/ruby_ui/pagination_test.rb | 39 ++++++++++++++ test/ruby_ui/popover_test.rb | 30 +++++++++++ test/{rbui => ruby_ui}/select_test.rb | 16 +++--- test/ruby_ui/setup_test.rb | 31 +++++++++++ test/ruby_ui/sheet_test.rb | 35 +++++++++++++ test/{rbui => ruby_ui}/shortcut_key_test.rb | 4 +- test/ruby_ui/table_test.rb | 48 +++++++++++++++++ test/ruby_ui/tabs_test.rb | 29 +++++++++++ test/{rbui => ruby_ui}/text_test.rb | 20 ++++---- test/{rbui => ruby_ui}/textarea_test.rb | 6 +-- test/{rbui => ruby_ui}/theme_toggle_test.rb | 8 +-- test/{rbui => ruby_ui}/tooltip_test.rb | 12 ++--- 239 files changed, 791 insertions(+), 791 deletions(-) rename lib/{rbui => ruby_ui}/accordion/accordion.rb (93%) rename lib/{rbui => ruby_ui}/accordion/accordion_content.rb (95%) rename lib/{rbui => ruby_ui}/accordion/accordion_controller.js (100%) rename lib/{rbui => ruby_ui}/accordion/accordion_default_content.rb (94%) rename lib/{rbui => ruby_ui}/accordion/accordion_default_trigger.rb (91%) rename lib/{rbui => ruby_ui}/accordion/accordion_icon.rb (98%) rename lib/{rbui => ruby_ui}/accordion/accordion_item.rb (97%) rename lib/{rbui => ruby_ui}/accordion/accordion_trigger.rb (96%) rename lib/{rbui => ruby_ui}/alert/alert.rb (98%) rename lib/{rbui => ruby_ui}/alert/alert_description.rb (94%) rename lib/{rbui => ruby_ui}/alert/alert_title.rb (94%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog.rb (96%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_action.rb (76%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_cancel.rb (84%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_content.rb (99%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_controller.js (100%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_description.rb (94%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_footer.rb (95%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_header.rb (94%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_title.rb (94%) rename lib/{rbui => ruby_ui}/alert_dialog/alert_dialog_trigger.rb (95%) rename lib/{rbui => ruby_ui}/aspect_ratio/aspect_ratio.rb (98%) rename lib/{rbui => ruby_ui}/avatar/avatar.rb (97%) rename lib/{rbui => ruby_ui}/avatar/avatar_fallback.rb (95%) rename lib/{rbui => ruby_ui}/avatar/avatar_image.rb (96%) rename lib/{rbui => ruby_ui}/badge/badge.rb (99%) rename lib/{rbui => ruby_ui}/base.rb (98%) rename lib/{rbui => ruby_ui}/button/button.rb (99%) rename lib/{rbui => ruby_ui}/calendar/calendar.rb (67%) rename lib/{rbui => ruby_ui}/calendar/calendar_body.rb (94%) rename lib/{rbui => ruby_ui}/calendar/calendar_controller.js (100%) rename lib/{rbui => ruby_ui}/calendar/calendar_days.rb (99%) rename lib/{rbui => ruby_ui}/calendar/calendar_header.rb (94%) rename lib/{rbui => ruby_ui}/calendar/calendar_input_controller.js (100%) rename lib/{rbui => ruby_ui}/calendar/calendar_next.rb (99%) rename lib/{rbui => ruby_ui}/calendar/calendar_prev.rb (99%) rename lib/{rbui => ruby_ui}/calendar/calendar_title.rb (97%) rename lib/{rbui => ruby_ui}/calendar/calendar_weekdays.rb (97%) rename lib/{rbui => ruby_ui}/card/card.rb (94%) rename lib/{rbui => ruby_ui}/card/card_content.rb (93%) rename lib/{rbui => ruby_ui}/card/card_description.rb (94%) rename lib/{rbui => ruby_ui}/card/card_footer.rb (94%) rename lib/{rbui => ruby_ui}/card/card_header.rb (94%) rename lib/{rbui => ruby_ui}/card/card_title.rb (94%) rename lib/{rbui => ruby_ui}/chart/chart.rb (96%) rename lib/{rbui => ruby_ui}/chart/chart_controller.js (100%) rename lib/{rbui => ruby_ui}/checkbox/checkbox.rb (98%) rename lib/{rbui => ruby_ui}/checkbox/checkbox_group.rb (95%) rename lib/{rbui => ruby_ui}/checkbox/checkbox_group_controller.js (100%) rename lib/{rbui => ruby_ui}/clipboard/clipboard.rb (98%) rename lib/{rbui => ruby_ui}/clipboard/clipboard_controller.js (100%) rename lib/{rbui => ruby_ui}/clipboard/clipboard_popover.rb (98%) rename lib/{rbui => ruby_ui}/clipboard/clipboard_source.rb (94%) rename lib/{rbui => ruby_ui}/clipboard/clipboard_trigger.rb (95%) rename lib/{rbui => ruby_ui}/codeblock/codeblock.rb (89%) rename lib/{rbui => ruby_ui}/collapsible/collapsible.rb (96%) rename lib/{rbui => ruby_ui}/collapsible/collapsible_content.rb (95%) rename lib/{rbui => ruby_ui}/collapsible/collapsible_controller.js (100%) rename lib/{rbui => ruby_ui}/collapsible/collapsible_trigger.rb (95%) rename lib/{rbui => ruby_ui}/combobox/combobox.rb (97%) rename lib/{rbui => ruby_ui}/combobox/combobox_content.rb (98%) rename lib/{rbui => ruby_ui}/combobox/combobox_content_controller.js (100%) rename lib/{rbui => ruby_ui}/combobox/combobox_controller.js (100%) rename lib/{rbui => ruby_ui}/combobox/combobox_empty.rb (96%) rename lib/{rbui => ruby_ui}/combobox/combobox_group.rb (98%) rename lib/{rbui => ruby_ui}/combobox/combobox_input.rb (96%) rename lib/{rbui => ruby_ui}/combobox/combobox_item.rb (99%) rename lib/{rbui => ruby_ui}/combobox/combobox_item_controller.js (100%) rename lib/{rbui => ruby_ui}/combobox/combobox_list.rb (96%) rename lib/{rbui => ruby_ui}/combobox/combobox_search_input.rb (98%) rename lib/{rbui => ruby_ui}/combobox/combobox_separator.rb (93%) rename lib/{rbui => ruby_ui}/combobox/combobox_trigger.rb (99%) rename lib/{rbui => ruby_ui}/combobox/combobox_value.rb (97%) rename lib/{rbui => ruby_ui}/command/command.rb (89%) rename lib/{rbui => ruby_ui}/command/command_controller.js (100%) rename lib/{rbui => ruby_ui}/command/command_dialog.rb (94%) rename lib/{rbui => ruby_ui}/command/command_dialog_content.rb (99%) rename lib/{rbui => ruby_ui}/command/command_dialog_trigger.rb (97%) rename lib/{rbui => ruby_ui}/command/command_empty.rb (95%) rename lib/{rbui => ruby_ui}/command/command_group.rb (98%) rename lib/{rbui => ruby_ui}/command/command_input.rb (99%) rename lib/{rbui => ruby_ui}/command/command_item.rb (98%) rename lib/{rbui => ruby_ui}/command/command_list.rb (94%) rename lib/{rbui => ruby_ui}/context_menu/context_menu.rb (96%) rename lib/{rbui => ruby_ui}/context_menu/context_menu_content.rb (98%) rename lib/{rbui => ruby_ui}/context_menu/context_menu_controller.js (100%) rename lib/{rbui => ruby_ui}/context_menu/context_menu_item.rb (99%) rename lib/{rbui => ruby_ui}/context_menu/context_menu_label.rb (96%) rename lib/{rbui => ruby_ui}/context_menu/context_menu_separator.rb (95%) rename lib/{rbui => ruby_ui}/context_menu/context_menu_trigger.rb (95%) rename lib/{rbui => ruby_ui}/dialog/dialog.rb (96%) rename lib/{rbui => ruby_ui}/dialog/dialog_content.rb (99%) rename lib/{rbui => ruby_ui}/dialog/dialog_controller.js (100%) rename lib/{rbui => ruby_ui}/dialog/dialog_description.rb (94%) rename lib/{rbui => ruby_ui}/dialog/dialog_footer.rb (95%) rename lib/{rbui => ruby_ui}/dialog/dialog_header.rb (94%) rename lib/{rbui => ruby_ui}/dialog/dialog_middle.rb (93%) rename lib/{rbui => ruby_ui}/dialog/dialog_title.rb (94%) rename lib/{rbui => ruby_ui}/dialog/dialog_trigger.rb (95%) rename lib/{rbui => ruby_ui}/dropdown_menu/dropdown_menu.rb (97%) rename lib/{rbui => ruby_ui}/dropdown_menu/dropdown_menu_content.rb (98%) rename lib/{rbui => ruby_ui}/dropdown_menu/dropdown_menu_controller.js (100%) rename lib/{rbui => ruby_ui}/dropdown_menu/dropdown_menu_item.rb (98%) rename lib/{rbui => ruby_ui}/dropdown_menu/dropdown_menu_label.rb (94%) rename lib/{rbui => ruby_ui}/dropdown_menu/dropdown_menu_separator.rb (95%) rename lib/{rbui => ruby_ui}/dropdown_menu/dropdown_menu_trigger.rb (95%) rename lib/{rbui => ruby_ui}/form/form.rb (92%) rename lib/{rbui => ruby_ui}/form/form_field.rb (95%) rename lib/{rbui => ruby_ui}/form/form_field_controller.js (100%) rename lib/{rbui => ruby_ui}/form/form_field_error.rb (95%) rename lib/{rbui => ruby_ui}/form/form_field_hint.rb (93%) rename lib/{rbui => ruby_ui}/form/form_field_label.rb (95%) rename lib/{rbui => ruby_ui}/hover_card/hover_card.rb (97%) rename lib/{rbui => ruby_ui}/hover_card/hover_card_content.rb (98%) rename lib/{rbui => ruby_ui}/hover_card/hover_card_controller.js (100%) rename lib/{rbui => ruby_ui}/hover_card/hover_card_trigger.rb (95%) rename lib/{rbui => ruby_ui}/index.js (98%) rename lib/{rbui => ruby_ui}/input/input.rb (98%) rename lib/{rbui => ruby_ui}/link/link.rb (99%) rename lib/{rbui => ruby_ui}/pagination/pagination.rb (95%) rename lib/{rbui => ruby_ui}/pagination/pagination_content.rb (94%) rename lib/{rbui => ruby_ui}/pagination/pagination_ellipsis.rb (98%) rename lib/{rbui => ruby_ui}/pagination/pagination_item.rb (82%) rename lib/{rbui => ruby_ui}/popover/popover.rb (97%) rename lib/{rbui => ruby_ui}/popover/popover_content.rb (98%) rename lib/{rbui => ruby_ui}/popover/popover_controller.js (100%) rename lib/{rbui => ruby_ui}/popover/popover_trigger.rb (95%) rename lib/{rbui => ruby_ui}/radio_button/radio_button.rb (96%) rename lib/{rbui => ruby_ui}/railtie.rb (71%) rename lib/{rbui => ruby_ui}/select/select.rb (96%) rename lib/{rbui => ruby_ui}/select/select_content.rb (98%) rename lib/{rbui => ruby_ui}/select/select_controller.js (100%) rename lib/{rbui => ruby_ui}/select/select_group.rb (92%) rename lib/{rbui => ruby_ui}/select/select_input.rb (96%) rename lib/{rbui => ruby_ui}/select/select_item.rb (99%) rename lib/{rbui => ruby_ui}/select/select_item_controller.js (100%) rename lib/{rbui => ruby_ui}/select/select_label.rb (94%) rename lib/{rbui => ruby_ui}/select/select_trigger.rb (98%) rename lib/{rbui => ruby_ui}/select/select_value.rb (97%) rename lib/{rbui => ruby_ui}/sheet/sheet.rb (93%) rename lib/{rbui => ruby_ui}/sheet/sheet_content.rb (99%) rename lib/{rbui => ruby_ui}/sheet/sheet_content_controller.js (100%) rename lib/{rbui => ruby_ui}/sheet/sheet_controller.js (100%) rename lib/{rbui => ruby_ui}/sheet/sheet_description.rb (94%) rename lib/{rbui => ruby_ui}/sheet/sheet_footer.rb (95%) rename lib/{rbui => ruby_ui}/sheet/sheet_header.rb (94%) rename lib/{rbui => ruby_ui}/sheet/sheet_middle.rb (93%) rename lib/{rbui => ruby_ui}/sheet/sheet_title.rb (94%) rename lib/{rbui => ruby_ui}/sheet/sheet_trigger.rb (94%) rename lib/{rbui => ruby_ui}/shortcut_key/shortcut_key.rb (96%) rename lib/{rbui => ruby_ui}/table/table.rb (95%) rename lib/{rbui => ruby_ui}/table/table_body.rb (94%) rename lib/{rbui => ruby_ui}/table/table_caption.rb (94%) rename lib/{rbui => ruby_ui}/table/table_cell.rb (95%) rename lib/{rbui => ruby_ui}/table/table_footer.rb (95%) rename lib/{rbui => ruby_ui}/table/table_head.rb (95%) rename lib/{rbui => ruby_ui}/table/table_header.rb (93%) rename lib/{rbui => ruby_ui}/table/table_row.rb (95%) rename lib/{rbui => ruby_ui}/tabs/tabs.rb (96%) rename lib/{rbui => ruby_ui}/tabs/tabs_content.rb (97%) rename lib/{rbui => ruby_ui}/tabs/tabs_controller.js (100%) rename lib/{rbui => ruby_ui}/tabs/tabs_list.rb (95%) rename lib/{rbui => ruby_ui}/tabs/tabs_trigger.rb (98%) rename lib/{rbui => ruby_ui}/textarea/textarea.rb (98%) rename lib/{rbui => ruby_ui}/theme_toggle/theme_toggle.rb (98%) rename lib/{rbui => ruby_ui}/theme_toggle/theme_toggle_controller.js (100%) rename lib/{rbui => ruby_ui}/tooltip/tooltip.rb (96%) rename lib/{rbui => ruby_ui}/tooltip/tooltip_content.rb (98%) rename lib/{rbui => ruby_ui}/tooltip/tooltip_controller.js (100%) rename lib/{rbui => ruby_ui}/tooltip/tooltip_trigger.rb (95%) rename lib/{rbui => ruby_ui}/typography/heading.rb (98%) rename lib/{rbui => ruby_ui}/typography/inline_code.rb (95%) rename lib/{rbui => ruby_ui}/typography/inline_link.rb (96%) rename lib/{rbui => ruby_ui}/typography/text.rb (98%) rename lib/{rbui => ruby_ui}/typography/typography_blockquote.rb (94%) rename lib/{rbui => ruby_ui}/version.rb (81%) delete mode 100644 test/rbui/alert_dialog_test.rb delete mode 100644 test/rbui/calendar_test.rb delete mode 100644 test/rbui/card_test.rb delete mode 100644 test/rbui/combobox_test.rb delete mode 100644 test/rbui/context_menu_test.rb delete mode 100644 test/rbui/dialog_test.rb delete mode 100644 test/rbui/dropdown_menu_test.rb delete mode 100644 test/rbui/form_test.rb delete mode 100644 test/rbui/hover_card_test.rb delete mode 100644 test/rbui/pagination_test.rb delete mode 100644 test/rbui/popover_test.rb delete mode 100644 test/rbui/setup_test.rb delete mode 100644 test/rbui/sheet_test.rb delete mode 100644 test/rbui/table_test.rb delete mode 100644 test/rbui/tabs_test.rb rename test/{rbui => ruby_ui}/accordion_test.rb (64%) create mode 100644 test/ruby_ui/alert_dialog_test.rb rename test/{rbui => ruby_ui}/alert_test.rb (51%) rename test/{rbui => ruby_ui}/aspect_ratio_test.rb (78%) rename test/{rbui => ruby_ui}/avatar_test.rb (51%) rename test/{rbui => ruby_ui}/badge_test.rb (74%) rename test/{rbui => ruby_ui}/button_test.rb (68%) create mode 100644 test/ruby_ui/calendar_test.rb create mode 100644 test/ruby_ui/card_test.rb rename test/{rbui => ruby_ui}/chart_test.rb (88%) rename test/{rbui => ruby_ui}/checkbox_test.rb (72%) rename test/{rbui => ruby_ui}/clipboard_test.rb (65%) rename test/{rbui => ruby_ui}/codeblock_test.rb (77%) rename test/{rbui => ruby_ui}/collapsible_test.rb (71%) create mode 100644 test/ruby_ui/combobox_test.rb rename test/{rbui => ruby_ui}/command_test.rb (62%) create mode 100644 test/ruby_ui/context_menu_test.rb create mode 100644 test/ruby_ui/dialog_test.rb create mode 100644 test/ruby_ui/dropdown_menu_test.rb create mode 100644 test/ruby_ui/form_test.rb create mode 100644 test/ruby_ui/hover_card_test.rb rename test/{rbui => ruby_ui}/inline_code_test.rb (79%) rename test/{rbui => ruby_ui}/inline_link_test.rb (79%) rename test/{rbui => ruby_ui}/input_test.rb (67%) rename test/{rbui => ruby_ui}/link_test.rb (72%) create mode 100644 test/ruby_ui/pagination_test.rb create mode 100644 test/ruby_ui/popover_test.rb rename test/{rbui => ruby_ui}/select_test.rb (56%) create mode 100644 test/ruby_ui/setup_test.rb create mode 100644 test/ruby_ui/sheet_test.rb rename test/{rbui => ruby_ui}/shortcut_key_test.rb (77%) create mode 100644 test/ruby_ui/table_test.rb create mode 100644 test/ruby_ui/tabs_test.rb rename test/{rbui => ruby_ui}/text_test.rb (76%) rename test/{rbui => ruby_ui}/textarea_test.rb (70%) rename test/{rbui => ruby_ui}/theme_toggle_test.rb (60%) rename test/{rbui => ruby_ui}/tooltip_test.rb (50%) diff --git a/LICENSE.txt b/LICENSE.txt index 89c27dd9..f2420e82 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2024 RBUI +Copyright (c) 2024 RubyUI Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 4bcc1b9f..c8c04258 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ -# RBUI (former PhlexUI) 🚀 +# RubyUI (former PhlexUI) 🚀 A UI component library, crafted precisely for Ruby devs who want to stay organized and build modern apps, fast. ✨ **Use this to build your own component library** 🛠️ -## About RBUI 📚 +## About RubyUI 📚 -RBUI is a UI component library designed to let Ruby developers create modern, fast, and organized applications. 💎 +RubyUI is a UI component library designed to let Ruby developers create modern, fast, and organized applications. 💎 ### Key Features: -- **Built for Speed** ⚡: RBUI leverages Phlex, which is up to 12x faster than traditional Rails ERB templates. +- **Built for Speed** ⚡: RubyUI leverages Phlex, which is up to 12x faster than traditional Rails ERB templates. - **Stunning UI** 🎨: Design beautiful, streamlined, and customizable UIs that sell your app effortlessly. - **Stay Organized** 📁: Keep your UI components well-organized and easy to manage. - **Customer-Centric UX** 🧑‍💼: Create memorable app experiences for your users. @@ -56,7 +56,7 @@ Visit https://rbui.dev/docs/introduction to view the full documentation, includi ## Speed Comparison 🏎️ -RBUI, powered by Phlex, outperforms traditional methods: +RubyUI, powered by Phlex, outperforms traditional methods: - Phlex: Baseline 🏁 - ViewComponent: 5.57x slower 🐢 @@ -75,4 +75,4 @@ Licensed under the [MIT license](https://github.com/shadcn/ui/blob/main/LICENSE. --- -© 2024 RBUI. All rights reserved. 🔒 +© 2024 RubyUI. All rights reserved. 🔒 diff --git a/lib/generators/rbui/base_generator.rb b/lib/generators/rbui/base_generator.rb index 40e313c3..59013631 100644 --- a/lib/generators/rbui/base_generator.rb +++ b/lib/generators/rbui/base_generator.rb @@ -1,6 +1,6 @@ require "rails/generators" -module RBUI +module RubyUI module Generators class BaseGenerator < defined?(Rails::Generators::Base) ? Rails::Generators::Base : Object namespace "rbui:base" diff --git a/lib/generators/rbui/component_generator.rb b/lib/generators/rbui/component_generator.rb index ae81404b..a047b87f 100644 --- a/lib/generators/rbui/component_generator.rb +++ b/lib/generators/rbui/component_generator.rb @@ -1,6 +1,6 @@ -module RBUI +module RubyUI module Generators - class ComponentGenerator < RBUI::Generators::BaseGenerator + class ComponentGenerator < RubyUI::Generators::BaseGenerator namespace "rbui:component" source_root File.expand_path("../../..", __dir__) diff --git a/lib/generators/rbui/install/install_generator.rb b/lib/generators/rbui/install/install_generator.rb index 3454641c..804b1d11 100644 --- a/lib/generators/rbui/install/install_generator.rb +++ b/lib/generators/rbui/install/install_generator.rb @@ -2,9 +2,9 @@ require_relative "../base_generator" # TODO: make ejctectec components work without the gem -module RBUI +module RubyUI module Generators - class InstallGenerator < RBUI::Generators::BaseGenerator + class InstallGenerator < RubyUI::Generators::BaseGenerator namespace "rbui:install" if defined?(Rails::Generators::Base) @@ -59,7 +59,7 @@ def install_stuff tailwind_config_path = Rails.root.join("config/tailwind.config.js") if !File.exist?(tailwind_config_path) - say "Tailwind CSS is required for RBUI", :red + say "Tailwind CSS is required for RubyUI", :red end say "Add rbui initializer" @@ -94,7 +94,7 @@ def pin_rbui_js stimulus_path = Rails.root.join("app/javascript/application.js") package_name = "rbui-js" - say "Add RBUI Stimulus controllers" + say "Add RubyUI Stimulus controllers" # run "mkdir -p app/javascript/controllers/rbui-js" template "index.js", "app/components/rbui/index.js" @@ -132,11 +132,11 @@ def pin_rbui_js end def include_rbui - message = "Include RBUI in your global component layout?\n This allows to call RBUI.Button {\"button\"} / RBUI::Button.new {\"button\"} with Button {\"button\"} (y/n)" + message = "Include RubyUI in your global component layout?\n This allows to call RubyUI.Button {\"button\"} / RubyUI::Button.new {\"button\"} with Button {\"button\"} (y/n)" if yes?(message) - say "Add RBUI to your global component layout" + say "Add RubyUI to your global component layout" insert_into_file "app/views/application_view.rb", after: "class ApplicationView < ApplicationComponent\n" do - " include RBUI\n" + " include RubyUI\n" end end end diff --git a/lib/generators/rbui/install/templates/base_store_initializer.rb.tt b/lib/generators/rbui/install/templates/base_store_initializer.rb.tt index 02a09787..c99d685f 100644 --- a/lib/generators/rbui/install/templates/base_store_initializer.rb.tt +++ b/lib/generators/rbui/install/templates/base_store_initializer.rb.tt @@ -1,10 +1,10 @@ -#RBUI.setup do |config| +#RubyUI.setup do |config| - # Setting a namespace allows you to access RBUI components through this namespace. + # Setting a namespace allows you to access RubyUI components through this namespace. # For example, with namespace set to "UI", you can use: - # UI::Button.new instead of RBUI::Button.new - # UI::Card.new instead of RBUI::Card.new + # UI::Button.new instead of RubyUI::Button.new + # UI::Card.new instead of RubyUI::Card.new # This can help avoid naming conflicts and allows for cleaner, more concise code. - # If you prefer to use RBUI components directly, you can leave this unset. + # If you prefer to use RubyUI components directly, you can leave this unset. # config.namespace = "UI" #end diff --git a/lib/generators/rbui/install/templates/index.js.tt b/lib/generators/rbui/install/templates/index.js.tt index ff6e702d..be0945b5 100644 --- a/lib/generators/rbui/install/templates/index.js.tt +++ b/lib/generators/rbui/install/templates/index.js.tt @@ -6,5 +6,5 @@ import { application } from "../../../app/javascript/controllers/application"; // Register all controllers // application.register("rbui--combobox", ComboboxController); -import RBUI from "rbui-js"; -RBUI.initialize(application); +import RubyUI from "rbui-js"; +RubyUI.initialize(application); diff --git a/lib/generators/rbui/install/templates/index_view.rb.tt b/lib/generators/rbui/install/templates/index_view.rb.tt index 963dc8dd..0218e28d 100644 --- a/lib/generators/rbui/install/templates/index_view.rb.tt +++ b/lib/generators/rbui/install/templates/index_view.rb.tt @@ -2,7 +2,7 @@ class Static::IndexView < ApplicationView def template - render RBUI::Button.new { "click me" } + render RubyUI::Button.new { "click me" } br {} # UI.Button { "click me" } diff --git a/lib/generators/rbui/install/templates/tailwind.config.js.tt b/lib/generators/rbui/install/templates/tailwind.config.js.tt index a517a41e..96e389cf 100644 --- a/lib/generators/rbui/install/templates/tailwind.config.js.tt +++ b/lib/generators/rbui/install/templates/tailwind.config.js.tt @@ -2,8 +2,8 @@ const execSync = require('child_process').execSync; // Import rbui gem path -const outputRBUI = execSync('bundle show rbui', { encoding: 'utf-8' }); -const rbui_path = outputRBUI.trim() + '/**/*.rb'; +const outputRubyUI = execSync('bundle show rbui', { encoding: 'utf-8' }); +const rbui_path = outputRubyUI.trim() + '/**/*.rb'; const defaultTheme = require('tailwindcss/defaultTheme') diff --git a/lib/rbui.rb b/lib/rbui.rb index 63073aea..c7996bcd 100644 --- a/lib/rbui.rb +++ b/lib/rbui.rb @@ -3,7 +3,7 @@ require "json" require "phlex" -module RBUI +module RubyUI extend Phlex::Kit def self.setup diff --git a/lib/rbui/accordion/accordion.rb b/lib/ruby_ui/accordion/accordion.rb similarity index 93% rename from lib/rbui/accordion/accordion.rb rename to lib/ruby_ui/accordion/accordion.rb index 70ce830e..c7f8ff24 100644 --- a/lib/rbui/accordion/accordion.rb +++ b/lib/ruby_ui/accordion/accordion.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Accordion < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/accordion/accordion_content.rb b/lib/ruby_ui/accordion/accordion_content.rb similarity index 95% rename from lib/rbui/accordion/accordion_content.rb rename to lib/ruby_ui/accordion/accordion_content.rb index a8b168ce..5f2e6c62 100644 --- a/lib/rbui/accordion/accordion_content.rb +++ b/lib/ruby_ui/accordion/accordion_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AccordionContent < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/accordion/accordion_controller.js b/lib/ruby_ui/accordion/accordion_controller.js similarity index 100% rename from lib/rbui/accordion/accordion_controller.js rename to lib/ruby_ui/accordion/accordion_controller.js diff --git a/lib/rbui/accordion/accordion_default_content.rb b/lib/ruby_ui/accordion/accordion_default_content.rb similarity index 94% rename from lib/rbui/accordion/accordion_default_content.rb rename to lib/ruby_ui/accordion/accordion_default_content.rb index c405d6bb..423255b6 100644 --- a/lib/rbui/accordion/accordion_default_content.rb +++ b/lib/ruby_ui/accordion/accordion_default_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AccordionDefaultContent < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/accordion/accordion_default_trigger.rb b/lib/ruby_ui/accordion/accordion_default_trigger.rb similarity index 91% rename from lib/rbui/accordion/accordion_default_trigger.rb rename to lib/ruby_ui/accordion/accordion_default_trigger.rb index 968f6dc2..b55aa77d 100644 --- a/lib/rbui/accordion/accordion_default_trigger.rb +++ b/lib/ruby_ui/accordion/accordion_default_trigger.rb @@ -1,11 +1,11 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AccordionDefaultTrigger < Base def view_template(&block) div(class: "flex items-center justify-between w-full") do p(&block) - RBUI.AccordionIcon + RubyUI.AccordionIcon end end diff --git a/lib/rbui/accordion/accordion_icon.rb b/lib/ruby_ui/accordion/accordion_icon.rb similarity index 98% rename from lib/rbui/accordion/accordion_icon.rb rename to lib/ruby_ui/accordion/accordion_icon.rb index 5fbb5ac1..48a79961 100644 --- a/lib/rbui/accordion/accordion_icon.rb +++ b/lib/ruby_ui/accordion/accordion_icon.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AccordionIcon < Base def view_template(&block) span(**attrs) do diff --git a/lib/rbui/accordion/accordion_item.rb b/lib/ruby_ui/accordion/accordion_item.rb similarity index 97% rename from lib/rbui/accordion/accordion_item.rb rename to lib/ruby_ui/accordion/accordion_item.rb index 6dab750f..77b6e557 100644 --- a/lib/rbui/accordion/accordion_item.rb +++ b/lib/ruby_ui/accordion/accordion_item.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AccordionItem < Base def initialize(open: false, rotate_icon: 180, **attrs) @open = open diff --git a/lib/rbui/accordion/accordion_trigger.rb b/lib/ruby_ui/accordion/accordion_trigger.rb similarity index 96% rename from lib/rbui/accordion/accordion_trigger.rb rename to lib/ruby_ui/accordion/accordion_trigger.rb index 5659939d..69ff8bf9 100644 --- a/lib/rbui/accordion/accordion_trigger.rb +++ b/lib/ruby_ui/accordion/accordion_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AccordionTrigger < Base def view_template(&) button(**attrs, &) diff --git a/lib/rbui/alert/alert.rb b/lib/ruby_ui/alert/alert.rb similarity index 98% rename from lib/rbui/alert/alert.rb rename to lib/ruby_ui/alert/alert.rb index fdc428e3..0c7881eb 100644 --- a/lib/rbui/alert/alert.rb +++ b/lib/ruby_ui/alert/alert.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Alert < Base def initialize(variant: nil, **attrs) @variant = variant diff --git a/lib/rbui/alert/alert_description.rb b/lib/ruby_ui/alert/alert_description.rb similarity index 94% rename from lib/rbui/alert/alert_description.rb rename to lib/ruby_ui/alert/alert_description.rb index 776bf52f..b36a15d1 100644 --- a/lib/rbui/alert/alert_description.rb +++ b/lib/ruby_ui/alert/alert_description.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDescription < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/alert/alert_title.rb b/lib/ruby_ui/alert/alert_title.rb similarity index 94% rename from lib/rbui/alert/alert_title.rb rename to lib/ruby_ui/alert/alert_title.rb index 09caaec2..37e2fff9 100644 --- a/lib/rbui/alert/alert_title.rb +++ b/lib/ruby_ui/alert/alert_title.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertTitle < Base def view_template(&) h5(**attrs, &) diff --git a/lib/rbui/alert_dialog/alert_dialog.rb b/lib/ruby_ui/alert_dialog/alert_dialog.rb similarity index 96% rename from lib/rbui/alert_dialog/alert_dialog.rb rename to lib/ruby_ui/alert_dialog/alert_dialog.rb index af688f5e..dbf084b3 100644 --- a/lib/rbui/alert_dialog/alert_dialog.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialog < Base def initialize(open: false, **attrs) @open = open diff --git a/lib/rbui/alert_dialog/alert_dialog_action.rb b/lib/ruby_ui/alert_dialog/alert_dialog_action.rb similarity index 76% rename from lib/rbui/alert_dialog/alert_dialog_action.rb rename to lib/ruby_ui/alert_dialog/alert_dialog_action.rb index dd314700..75a34d2e 100644 --- a/lib/rbui/alert_dialog/alert_dialog_action.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_action.rb @@ -1,9 +1,9 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialogAction < Base def view_template(&) - render RBUI::Button.new(**attrs, &) + render RubyUI::Button.new(**attrs, &) end private diff --git a/lib/rbui/alert_dialog/alert_dialog_cancel.rb b/lib/ruby_ui/alert_dialog/alert_dialog_cancel.rb similarity index 84% rename from lib/rbui/alert_dialog/alert_dialog_cancel.rb rename to lib/ruby_ui/alert_dialog/alert_dialog_cancel.rb index 69a85b1a..8f0a6f7d 100644 --- a/lib/rbui/alert_dialog/alert_dialog_cancel.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_cancel.rb @@ -1,9 +1,9 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialogCancel < Base def view_template(&) - render RBUI::Button.new(**attrs, &) + render RubyUI::Button.new(**attrs, &) end private diff --git a/lib/rbui/alert_dialog/alert_dialog_content.rb b/lib/ruby_ui/alert_dialog/alert_dialog_content.rb similarity index 99% rename from lib/rbui/alert_dialog/alert_dialog_content.rb rename to lib/ruby_ui/alert_dialog/alert_dialog_content.rb index 45bd55ff..32c4f740 100644 --- a/lib/rbui/alert_dialog/alert_dialog_content.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialogContent < Base def view_template(&block) div(class: "hidden") do diff --git a/lib/rbui/alert_dialog/alert_dialog_controller.js b/lib/ruby_ui/alert_dialog/alert_dialog_controller.js similarity index 100% rename from lib/rbui/alert_dialog/alert_dialog_controller.js rename to lib/ruby_ui/alert_dialog/alert_dialog_controller.js diff --git a/lib/rbui/alert_dialog/alert_dialog_description.rb b/lib/ruby_ui/alert_dialog/alert_dialog_description.rb similarity index 94% rename from lib/rbui/alert_dialog/alert_dialog_description.rb rename to lib/ruby_ui/alert_dialog/alert_dialog_description.rb index 5a0aa7b9..4bcf5578 100644 --- a/lib/rbui/alert_dialog/alert_dialog_description.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_description.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialogDescription < Base def view_template(&) p(**attrs, &) diff --git a/lib/rbui/alert_dialog/alert_dialog_footer.rb b/lib/ruby_ui/alert_dialog/alert_dialog_footer.rb similarity index 95% rename from lib/rbui/alert_dialog/alert_dialog_footer.rb rename to lib/ruby_ui/alert_dialog/alert_dialog_footer.rb index d03b8aea..07c0e6e1 100644 --- a/lib/rbui/alert_dialog/alert_dialog_footer.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_footer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialogFooter < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/alert_dialog/alert_dialog_header.rb b/lib/ruby_ui/alert_dialog/alert_dialog_header.rb similarity index 94% rename from lib/rbui/alert_dialog/alert_dialog_header.rb rename to lib/ruby_ui/alert_dialog/alert_dialog_header.rb index 93b17f0f..1331fa1f 100644 --- a/lib/rbui/alert_dialog/alert_dialog_header.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_header.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialogHeader < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/alert_dialog/alert_dialog_title.rb b/lib/ruby_ui/alert_dialog/alert_dialog_title.rb similarity index 94% rename from lib/rbui/alert_dialog/alert_dialog_title.rb rename to lib/ruby_ui/alert_dialog/alert_dialog_title.rb index 5cd0015b..6f7a87b4 100644 --- a/lib/rbui/alert_dialog/alert_dialog_title.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_title.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialogTitle < Base def view_template(&) h2(**attrs, &) diff --git a/lib/rbui/alert_dialog/alert_dialog_trigger.rb b/lib/ruby_ui/alert_dialog/alert_dialog_trigger.rb similarity index 95% rename from lib/rbui/alert_dialog/alert_dialog_trigger.rb rename to lib/ruby_ui/alert_dialog/alert_dialog_trigger.rb index 447e13bc..b3c44370 100644 --- a/lib/rbui/alert_dialog/alert_dialog_trigger.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AlertDialogTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/aspect_ratio/aspect_ratio.rb b/lib/ruby_ui/aspect_ratio/aspect_ratio.rb similarity index 98% rename from lib/rbui/aspect_ratio/aspect_ratio.rb rename to lib/ruby_ui/aspect_ratio/aspect_ratio.rb index fede6a68..87c286f1 100644 --- a/lib/rbui/aspect_ratio/aspect_ratio.rb +++ b/lib/ruby_ui/aspect_ratio/aspect_ratio.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AspectRatio < Base def initialize(aspect_ratio: "16/9", **attrs) raise "aspect_ratio must be in the format of a string with a slash in the middle (eg. '16/9', '1/1')" unless aspect_ratio.is_a?(String) && aspect_ratio.include?("/") diff --git a/lib/rbui/avatar/avatar.rb b/lib/ruby_ui/avatar/avatar.rb similarity index 97% rename from lib/rbui/avatar/avatar.rb rename to lib/ruby_ui/avatar/avatar.rb index 28bd2bf5..01b96781 100644 --- a/lib/rbui/avatar/avatar.rb +++ b/lib/ruby_ui/avatar/avatar.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Avatar < Base SIZES = { xs: "h-4 w-4 text-[0.5rem]", diff --git a/lib/rbui/avatar/avatar_fallback.rb b/lib/ruby_ui/avatar/avatar_fallback.rb similarity index 95% rename from lib/rbui/avatar/avatar_fallback.rb rename to lib/ruby_ui/avatar/avatar_fallback.rb index d7115333..a1a5a538 100644 --- a/lib/rbui/avatar/avatar_fallback.rb +++ b/lib/ruby_ui/avatar/avatar_fallback.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AvatarFallback < Base def view_template(&) span(**attrs, &) diff --git a/lib/rbui/avatar/avatar_image.rb b/lib/ruby_ui/avatar/avatar_image.rb similarity index 96% rename from lib/rbui/avatar/avatar_image.rb rename to lib/ruby_ui/avatar/avatar_image.rb index 00985466..bce164e3 100644 --- a/lib/rbui/avatar/avatar_image.rb +++ b/lib/ruby_ui/avatar/avatar_image.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class AvatarImage < Base def initialize(src:, alt: "", **attrs) @src = src diff --git a/lib/rbui/badge/badge.rb b/lib/ruby_ui/badge/badge.rb similarity index 99% rename from lib/rbui/badge/badge.rb rename to lib/ruby_ui/badge/badge.rb index 18afd91f..752f70e5 100644 --- a/lib/rbui/badge/badge.rb +++ b/lib/ruby_ui/badge/badge.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Badge < Base SIZES = { sm: "px-1.5 py-0.5 text-xs", diff --git a/lib/rbui/base.rb b/lib/ruby_ui/base.rb similarity index 98% rename from lib/rbui/base.rb rename to lib/ruby_ui/base.rb index ee5ecaf7..16ccc7db 100644 --- a/lib/rbui/base.rb +++ b/lib/ruby_ui/base.rb @@ -2,7 +2,7 @@ require "tailwind_merge" -module RBUI +module RubyUI class Base < Phlex::HTML TAILWIND_MERGER = ::TailwindMerge::Merger.new.freeze unless defined?(TAILWIND_MERGER) diff --git a/lib/rbui/button/button.rb b/lib/ruby_ui/button/button.rb similarity index 99% rename from lib/rbui/button/button.rb rename to lib/ruby_ui/button/button.rb index 7cc67912..9636fa22 100644 --- a/lib/rbui/button/button.rb +++ b/lib/ruby_ui/button/button.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Button < Base def initialize(type: :button, variant: :primary, size: :md, icon: false, **attrs) @type = type diff --git a/lib/rbui/calendar/calendar.rb b/lib/ruby_ui/calendar/calendar.rb similarity index 67% rename from lib/rbui/calendar/calendar.rb rename to lib/ruby_ui/calendar/calendar.rb index 2ea26c02..d15fa1f2 100644 --- a/lib/rbui/calendar/calendar.rb +++ b/lib/ruby_ui/calendar/calendar.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Calendar < Base def initialize(selected_date: nil, input_id: nil, date_format: "yyyy-MM-dd", **attrs) @selected_date = selected_date @@ -11,14 +11,14 @@ def initialize(selected_date: nil, input_id: nil, date_format: "yyyy-MM-dd", **a def view_template div(**attrs) do - RBUI.CalendarHeader do - RBUI.CalendarTitle - RBUI.CalendarPrev - RBUI.CalendarNext + RubyUI.CalendarHeader do + RubyUI.CalendarTitle + RubyUI.CalendarPrev + RubyUI.CalendarNext end - RBUI.CalendarBody # Where the calendar is rendered (Weekdays and Days) - RBUI.CalendarWeekdays # Template for the weekdays - RBUI.CalendarDays # Template for the days + RubyUI.CalendarBody # Where the calendar is rendered (Weekdays and Days) + RubyUI.CalendarWeekdays # Template for the weekdays + RubyUI.CalendarDays # Template for the days end end diff --git a/lib/rbui/calendar/calendar_body.rb b/lib/ruby_ui/calendar/calendar_body.rb similarity index 94% rename from lib/rbui/calendar/calendar_body.rb rename to lib/ruby_ui/calendar/calendar_body.rb index c1d49706..a7755ff6 100644 --- a/lib/rbui/calendar/calendar_body.rb +++ b/lib/ruby_ui/calendar/calendar_body.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CalendarBody < Base def view_template table(**attrs) diff --git a/lib/rbui/calendar/calendar_controller.js b/lib/ruby_ui/calendar/calendar_controller.js similarity index 100% rename from lib/rbui/calendar/calendar_controller.js rename to lib/ruby_ui/calendar/calendar_controller.js diff --git a/lib/rbui/calendar/calendar_days.rb b/lib/ruby_ui/calendar/calendar_days.rb similarity index 99% rename from lib/rbui/calendar/calendar_days.rb rename to lib/ruby_ui/calendar/calendar_days.rb index 38177f8d..b669643c 100644 --- a/lib/rbui/calendar/calendar_days.rb +++ b/lib/ruby_ui/calendar/calendar_days.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CalendarDays < Base BASE_CLASS = "inline-flex items-center justify-center rounded-md text-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 h-8 w-8 p-0 font-normal aria-selected:opacity-100" diff --git a/lib/rbui/calendar/calendar_header.rb b/lib/ruby_ui/calendar/calendar_header.rb similarity index 94% rename from lib/rbui/calendar/calendar_header.rb rename to lib/ruby_ui/calendar/calendar_header.rb index 324cef7c..72a560b6 100644 --- a/lib/rbui/calendar/calendar_header.rb +++ b/lib/ruby_ui/calendar/calendar_header.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CalendarHeader < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/calendar/calendar_input_controller.js b/lib/ruby_ui/calendar/calendar_input_controller.js similarity index 100% rename from lib/rbui/calendar/calendar_input_controller.js rename to lib/ruby_ui/calendar/calendar_input_controller.js diff --git a/lib/rbui/calendar/calendar_next.rb b/lib/ruby_ui/calendar/calendar_next.rb similarity index 99% rename from lib/rbui/calendar/calendar_next.rb rename to lib/ruby_ui/calendar/calendar_next.rb index 7203ca56..af93bdd6 100644 --- a/lib/rbui/calendar/calendar_next.rb +++ b/lib/ruby_ui/calendar/calendar_next.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CalendarNext < Base def view_template(&block) button(**attrs) do diff --git a/lib/rbui/calendar/calendar_prev.rb b/lib/ruby_ui/calendar/calendar_prev.rb similarity index 99% rename from lib/rbui/calendar/calendar_prev.rb rename to lib/ruby_ui/calendar/calendar_prev.rb index 750d0879..7fc2f5c9 100644 --- a/lib/rbui/calendar/calendar_prev.rb +++ b/lib/ruby_ui/calendar/calendar_prev.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CalendarPrev < Base def view_template(&block) button(**attrs) do diff --git a/lib/rbui/calendar/calendar_title.rb b/lib/ruby_ui/calendar/calendar_title.rb similarity index 97% rename from lib/rbui/calendar/calendar_title.rb rename to lib/ruby_ui/calendar/calendar_title.rb index da308203..e121a214 100644 --- a/lib/rbui/calendar/calendar_title.rb +++ b/lib/ruby_ui/calendar/calendar_title.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CalendarTitle < Base def initialize(default: "Month Year", **attrs) @default = default diff --git a/lib/rbui/calendar/calendar_weekdays.rb b/lib/ruby_ui/calendar/calendar_weekdays.rb similarity index 97% rename from lib/rbui/calendar/calendar_weekdays.rb rename to lib/ruby_ui/calendar/calendar_weekdays.rb index 45b9c376..a27bfde6 100644 --- a/lib/rbui/calendar/calendar_weekdays.rb +++ b/lib/ruby_ui/calendar/calendar_weekdays.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CalendarWeekdays < Base DAYS = %w[Monday Tuesday Wednesday Thursday Friday Saturday Sunday].freeze diff --git a/lib/rbui/card/card.rb b/lib/ruby_ui/card/card.rb similarity index 94% rename from lib/rbui/card/card.rb rename to lib/ruby_ui/card/card.rb index 7250f49c..520c04bc 100644 --- a/lib/rbui/card/card.rb +++ b/lib/ruby_ui/card/card.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Card < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/card/card_content.rb b/lib/ruby_ui/card/card_content.rb similarity index 93% rename from lib/rbui/card/card_content.rb rename to lib/ruby_ui/card/card_content.rb index 511d53f6..675780c9 100644 --- a/lib/rbui/card/card_content.rb +++ b/lib/ruby_ui/card/card_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CardContent < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/card/card_description.rb b/lib/ruby_ui/card/card_description.rb similarity index 94% rename from lib/rbui/card/card_description.rb rename to lib/ruby_ui/card/card_description.rb index 5ad4db77..c00e7439 100644 --- a/lib/rbui/card/card_description.rb +++ b/lib/ruby_ui/card/card_description.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CardDescription < Base def view_template(&) p(**attrs, &) diff --git a/lib/rbui/card/card_footer.rb b/lib/ruby_ui/card/card_footer.rb similarity index 94% rename from lib/rbui/card/card_footer.rb rename to lib/ruby_ui/card/card_footer.rb index 11d0478f..63e59cc3 100644 --- a/lib/rbui/card/card_footer.rb +++ b/lib/ruby_ui/card/card_footer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CardFooter < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/card/card_header.rb b/lib/ruby_ui/card/card_header.rb similarity index 94% rename from lib/rbui/card/card_header.rb rename to lib/ruby_ui/card/card_header.rb index f185a911..302da732 100644 --- a/lib/rbui/card/card_header.rb +++ b/lib/ruby_ui/card/card_header.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CardHeader < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/card/card_title.rb b/lib/ruby_ui/card/card_title.rb similarity index 94% rename from lib/rbui/card/card_title.rb rename to lib/ruby_ui/card/card_title.rb index c96898b7..87dd16a9 100644 --- a/lib/rbui/card/card_title.rb +++ b/lib/ruby_ui/card/card_title.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CardTitle < Base def view_template(&) h3(**attrs, &) diff --git a/lib/rbui/chart/chart.rb b/lib/ruby_ui/chart/chart.rb similarity index 96% rename from lib/rbui/chart/chart.rb rename to lib/ruby_ui/chart/chart.rb index f9ef7f33..5739f3b8 100644 --- a/lib/rbui/chart/chart.rb +++ b/lib/ruby_ui/chart/chart.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Chart < Base def initialize(options: {}, **attrs) @options = options.to_json diff --git a/lib/rbui/chart/chart_controller.js b/lib/ruby_ui/chart/chart_controller.js similarity index 100% rename from lib/rbui/chart/chart_controller.js rename to lib/ruby_ui/chart/chart_controller.js diff --git a/lib/rbui/checkbox/checkbox.rb b/lib/ruby_ui/checkbox/checkbox.rb similarity index 98% rename from lib/rbui/checkbox/checkbox.rb rename to lib/ruby_ui/checkbox/checkbox.rb index 8cdc03be..4c6d2cf7 100644 --- a/lib/rbui/checkbox/checkbox.rb +++ b/lib/ruby_ui/checkbox/checkbox.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Checkbox < Base def view_template input(**attrs) diff --git a/lib/rbui/checkbox/checkbox_group.rb b/lib/ruby_ui/checkbox/checkbox_group.rb similarity index 95% rename from lib/rbui/checkbox/checkbox_group.rb rename to lib/ruby_ui/checkbox/checkbox_group.rb index 4cb13504..dd640dc5 100644 --- a/lib/rbui/checkbox/checkbox_group.rb +++ b/lib/ruby_ui/checkbox/checkbox_group.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CheckboxGroup < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/checkbox/checkbox_group_controller.js b/lib/ruby_ui/checkbox/checkbox_group_controller.js similarity index 100% rename from lib/rbui/checkbox/checkbox_group_controller.js rename to lib/ruby_ui/checkbox/checkbox_group_controller.js diff --git a/lib/rbui/clipboard/clipboard.rb b/lib/ruby_ui/clipboard/clipboard.rb similarity index 98% rename from lib/rbui/clipboard/clipboard.rb rename to lib/ruby_ui/clipboard/clipboard.rb index e3b36ebb..64e0ec92 100644 --- a/lib/rbui/clipboard/clipboard.rb +++ b/lib/ruby_ui/clipboard/clipboard.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Clipboard < Base def initialize(options: {}, success: "Copied!", error: "Copy Failed!", **attrs) @options = options diff --git a/lib/rbui/clipboard/clipboard_controller.js b/lib/ruby_ui/clipboard/clipboard_controller.js similarity index 100% rename from lib/rbui/clipboard/clipboard_controller.js rename to lib/ruby_ui/clipboard/clipboard_controller.js diff --git a/lib/rbui/clipboard/clipboard_popover.rb b/lib/ruby_ui/clipboard/clipboard_popover.rb similarity index 98% rename from lib/rbui/clipboard/clipboard_popover.rb rename to lib/ruby_ui/clipboard/clipboard_popover.rb index b13c7278..da529a25 100644 --- a/lib/rbui/clipboard/clipboard_popover.rb +++ b/lib/ruby_ui/clipboard/clipboard_popover.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ClipboardPopover < Base def initialize(type:, **attrs) @type = type diff --git a/lib/rbui/clipboard/clipboard_source.rb b/lib/ruby_ui/clipboard/clipboard_source.rb similarity index 94% rename from lib/rbui/clipboard/clipboard_source.rb rename to lib/ruby_ui/clipboard/clipboard_source.rb index 56769c2a..f26392fe 100644 --- a/lib/rbui/clipboard/clipboard_source.rb +++ b/lib/ruby_ui/clipboard/clipboard_source.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ClipboardSource < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/clipboard/clipboard_trigger.rb b/lib/ruby_ui/clipboard/clipboard_trigger.rb similarity index 95% rename from lib/rbui/clipboard/clipboard_trigger.rb rename to lib/ruby_ui/clipboard/clipboard_trigger.rb index 22b76df3..b9dc4e6a 100644 --- a/lib/rbui/clipboard/clipboard_trigger.rb +++ b/lib/ruby_ui/clipboard/clipboard_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ClipboardTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/codeblock/codeblock.rb b/lib/ruby_ui/codeblock/codeblock.rb similarity index 89% rename from lib/rbui/codeblock/codeblock.rb rename to lib/ruby_ui/codeblock/codeblock.rb index 2a360c88..e214d4ef 100644 --- a/lib/rbui/codeblock/codeblock.rb +++ b/lib/ruby_ui/codeblock/codeblock.rb @@ -2,7 +2,7 @@ require "rouge" -module RBUI +module RubyUI class Codeblock < Base FORMATTER = ::Rouge::Formatters::HTML.new ROUGE_CSS = Rouge::Themes::Github.mode(:dark).render(scope: ".highlight") # See themes here: https://rouge-ruby.github.io/docs/Rouge/CSSTheme.html @@ -39,13 +39,13 @@ def default_attrs end def with_clipboard - RBUI.Clipboard(success: @clipboard_success, error: @clipboard_error, class: "relative") do - RBUI.ClipboardSource do + RubyUI.Clipboard(success: @clipboard_success, error: @clipboard_error, class: "relative") do + RubyUI.ClipboardSource do codeblock end div(class: "absolute top-2 right-2") do - RBUI.ClipboardTrigger do - RBUI.Button(variant: :ghost, size: :sm, icon: true, class: "text-white hover:text-white hover:bg-white/20") { clipboard_icon } + RubyUI.ClipboardTrigger do + RubyUI.Button(variant: :ghost, size: :sm, icon: true, class: "text-white hover:text-white hover:bg-white/20") { clipboard_icon } end end end diff --git a/lib/rbui/collapsible/collapsible.rb b/lib/ruby_ui/collapsible/collapsible.rb similarity index 96% rename from lib/rbui/collapsible/collapsible.rb rename to lib/ruby_ui/collapsible/collapsible.rb index adbfcfc7..d11bc3c8 100644 --- a/lib/rbui/collapsible/collapsible.rb +++ b/lib/ruby_ui/collapsible/collapsible.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Collapsible < Base def initialize(open: false, **attrs) @open = open diff --git a/lib/rbui/collapsible/collapsible_content.rb b/lib/ruby_ui/collapsible/collapsible_content.rb similarity index 95% rename from lib/rbui/collapsible/collapsible_content.rb rename to lib/ruby_ui/collapsible/collapsible_content.rb index e6259b15..1301605c 100644 --- a/lib/rbui/collapsible/collapsible_content.rb +++ b/lib/ruby_ui/collapsible/collapsible_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CollapsibleContent < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/collapsible/collapsible_controller.js b/lib/ruby_ui/collapsible/collapsible_controller.js similarity index 100% rename from lib/rbui/collapsible/collapsible_controller.js rename to lib/ruby_ui/collapsible/collapsible_controller.js diff --git a/lib/rbui/collapsible/collapsible_trigger.rb b/lib/ruby_ui/collapsible/collapsible_trigger.rb similarity index 95% rename from lib/rbui/collapsible/collapsible_trigger.rb rename to lib/ruby_ui/collapsible/collapsible_trigger.rb index 4273cab4..a436bb87 100644 --- a/lib/rbui/collapsible/collapsible_trigger.rb +++ b/lib/ruby_ui/collapsible/collapsible_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CollapsibleTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/combobox/combobox.rb b/lib/ruby_ui/combobox/combobox.rb similarity index 97% rename from lib/rbui/combobox/combobox.rb rename to lib/ruby_ui/combobox/combobox.rb index 6441db31..39afec7d 100644 --- a/lib/rbui/combobox/combobox.rb +++ b/lib/ruby_ui/combobox/combobox.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Combobox < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/combobox/combobox_content.rb b/lib/ruby_ui/combobox/combobox_content.rb similarity index 98% rename from lib/rbui/combobox/combobox_content.rb rename to lib/ruby_ui/combobox/combobox_content.rb index 75d858e8..2c13b449 100644 --- a/lib/rbui/combobox/combobox_content.rb +++ b/lib/ruby_ui/combobox/combobox_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxContent < Base def initialize(**attrs) @id = "content#{SecureRandom.hex(4)}" diff --git a/lib/rbui/combobox/combobox_content_controller.js b/lib/ruby_ui/combobox/combobox_content_controller.js similarity index 100% rename from lib/rbui/combobox/combobox_content_controller.js rename to lib/ruby_ui/combobox/combobox_content_controller.js diff --git a/lib/rbui/combobox/combobox_controller.js b/lib/ruby_ui/combobox/combobox_controller.js similarity index 100% rename from lib/rbui/combobox/combobox_controller.js rename to lib/ruby_ui/combobox/combobox_controller.js diff --git a/lib/rbui/combobox/combobox_empty.rb b/lib/ruby_ui/combobox/combobox_empty.rb similarity index 96% rename from lib/rbui/combobox/combobox_empty.rb rename to lib/ruby_ui/combobox/combobox_empty.rb index e487a473..c48c6831 100644 --- a/lib/rbui/combobox/combobox_empty.rb +++ b/lib/ruby_ui/combobox/combobox_empty.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxEmpty < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/combobox/combobox_group.rb b/lib/ruby_ui/combobox/combobox_group.rb similarity index 98% rename from lib/rbui/combobox/combobox_group.rb rename to lib/ruby_ui/combobox/combobox_group.rb index 4b53824f..66761fd4 100644 --- a/lib/rbui/combobox/combobox_group.rb +++ b/lib/ruby_ui/combobox/combobox_group.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxGroup < Base def initialize(heading: nil, **attrs) @heading = heading diff --git a/lib/rbui/combobox/combobox_input.rb b/lib/ruby_ui/combobox/combobox_input.rb similarity index 96% rename from lib/rbui/combobox/combobox_input.rb rename to lib/ruby_ui/combobox/combobox_input.rb index 01a55cf1..628f3ae1 100644 --- a/lib/rbui/combobox/combobox_input.rb +++ b/lib/ruby_ui/combobox/combobox_input.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxInput < Base def view_template input(**attrs) diff --git a/lib/rbui/combobox/combobox_item.rb b/lib/ruby_ui/combobox/combobox_item.rb similarity index 99% rename from lib/rbui/combobox/combobox_item.rb rename to lib/ruby_ui/combobox/combobox_item.rb index d7bd455a..41442cc0 100644 --- a/lib/rbui/combobox/combobox_item.rb +++ b/lib/ruby_ui/combobox/combobox_item.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxItem < Base def initialize(value: nil, **attrs) @value = value diff --git a/lib/rbui/combobox/combobox_item_controller.js b/lib/ruby_ui/combobox/combobox_item_controller.js similarity index 100% rename from lib/rbui/combobox/combobox_item_controller.js rename to lib/ruby_ui/combobox/combobox_item_controller.js diff --git a/lib/rbui/combobox/combobox_list.rb b/lib/ruby_ui/combobox/combobox_list.rb similarity index 96% rename from lib/rbui/combobox/combobox_list.rb rename to lib/ruby_ui/combobox/combobox_list.rb index da9a64af..ec84c252 100644 --- a/lib/rbui/combobox/combobox_list.rb +++ b/lib/ruby_ui/combobox/combobox_list.rb @@ -2,7 +2,7 @@ require "securerandom" -module RBUI +module RubyUI class ComboboxList < Base def initialize(**attrs) @id = "list#{SecureRandom.hex(4)}" diff --git a/lib/rbui/combobox/combobox_search_input.rb b/lib/ruby_ui/combobox/combobox_search_input.rb similarity index 98% rename from lib/rbui/combobox/combobox_search_input.rb rename to lib/ruby_ui/combobox/combobox_search_input.rb index f42ba5d4..4bebab7c 100644 --- a/lib/rbui/combobox/combobox_search_input.rb +++ b/lib/ruby_ui/combobox/combobox_search_input.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxSearchInput < Base def initialize(placeholder:, **attrs) @placeholder = placeholder diff --git a/lib/rbui/combobox/combobox_separator.rb b/lib/ruby_ui/combobox/combobox_separator.rb similarity index 93% rename from lib/rbui/combobox/combobox_separator.rb rename to lib/ruby_ui/combobox/combobox_separator.rb index 3f14366e..a2a18732 100644 --- a/lib/rbui/combobox/combobox_separator.rb +++ b/lib/ruby_ui/combobox/combobox_separator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxSeparator < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/combobox/combobox_trigger.rb b/lib/ruby_ui/combobox/combobox_trigger.rb similarity index 99% rename from lib/rbui/combobox/combobox_trigger.rb rename to lib/ruby_ui/combobox/combobox_trigger.rb index 6d3a21e0..e2adcaa3 100644 --- a/lib/rbui/combobox/combobox_trigger.rb +++ b/lib/ruby_ui/combobox/combobox_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxTrigger < Base def view_template(&block) button(**attrs) do diff --git a/lib/rbui/combobox/combobox_value.rb b/lib/ruby_ui/combobox/combobox_value.rb similarity index 97% rename from lib/rbui/combobox/combobox_value.rb rename to lib/ruby_ui/combobox/combobox_value.rb index 7ba6cb0f..27067fde 100644 --- a/lib/rbui/combobox/combobox_value.rb +++ b/lib/ruby_ui/combobox/combobox_value.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ComboboxValue < Base def initialize(placeholder: nil, **attrs) @placeholder = placeholder diff --git a/lib/rbui/command/command.rb b/lib/ruby_ui/command/command.rb similarity index 89% rename from lib/rbui/command/command.rb rename to lib/ruby_ui/command/command.rb index c4498430..de1d042c 100644 --- a/lib/rbui/command/command.rb +++ b/lib/ruby_ui/command/command.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Command < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/command/command_controller.js b/lib/ruby_ui/command/command_controller.js similarity index 100% rename from lib/rbui/command/command_controller.js rename to lib/ruby_ui/command/command_controller.js diff --git a/lib/rbui/command/command_dialog.rb b/lib/ruby_ui/command/command_dialog.rb similarity index 94% rename from lib/rbui/command/command_dialog.rb rename to lib/ruby_ui/command/command_dialog.rb index 167d7b99..83c4b3e2 100644 --- a/lib/rbui/command/command_dialog.rb +++ b/lib/ruby_ui/command/command_dialog.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CommandDialog < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/command/command_dialog_content.rb b/lib/ruby_ui/command/command_dialog_content.rb similarity index 99% rename from lib/rbui/command/command_dialog_content.rb rename to lib/ruby_ui/command/command_dialog_content.rb index a387e6f0..bb7a5a31 100644 --- a/lib/rbui/command/command_dialog_content.rb +++ b/lib/ruby_ui/command/command_dialog_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CommandDialogContent < Base SIZES = { xs: "max-w-sm", diff --git a/lib/rbui/command/command_dialog_trigger.rb b/lib/ruby_ui/command/command_dialog_trigger.rb similarity index 97% rename from lib/rbui/command/command_dialog_trigger.rb rename to lib/ruby_ui/command/command_dialog_trigger.rb index 7d4d0f17..ef84dbd8 100644 --- a/lib/rbui/command/command_dialog_trigger.rb +++ b/lib/ruby_ui/command/command_dialog_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CommandDialogTrigger < Base DEFAULT_KEYBINDINGS = [ "keydown.ctrl+k@window", diff --git a/lib/rbui/command/command_empty.rb b/lib/ruby_ui/command/command_empty.rb similarity index 95% rename from lib/rbui/command/command_empty.rb rename to lib/ruby_ui/command/command_empty.rb index d42327d3..8fb89fdf 100644 --- a/lib/rbui/command/command_empty.rb +++ b/lib/ruby_ui/command/command_empty.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CommandEmpty < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/command/command_group.rb b/lib/ruby_ui/command/command_group.rb similarity index 98% rename from lib/rbui/command/command_group.rb rename to lib/ruby_ui/command/command_group.rb index 84ba6774..6c2458e5 100644 --- a/lib/rbui/command/command_group.rb +++ b/lib/ruby_ui/command/command_group.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CommandGroup < Base def initialize(title: nil, **attrs) @title = title diff --git a/lib/rbui/command/command_input.rb b/lib/ruby_ui/command/command_input.rb similarity index 99% rename from lib/rbui/command/command_input.rb rename to lib/ruby_ui/command/command_input.rb index 1d4fd53e..6f57e7e8 100644 --- a/lib/rbui/command/command_input.rb +++ b/lib/ruby_ui/command/command_input.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CommandInput < Base def initialize(placeholder: "Type a command or search...", **attrs) @placeholder = placeholder diff --git a/lib/rbui/command/command_item.rb b/lib/ruby_ui/command/command_item.rb similarity index 98% rename from lib/rbui/command/command_item.rb rename to lib/ruby_ui/command/command_item.rb index a9cb1929..09a391db 100644 --- a/lib/rbui/command/command_item.rb +++ b/lib/ruby_ui/command/command_item.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CommandItem < Base def initialize(value:, text: "", href: "#", **attrs) @value = value diff --git a/lib/rbui/command/command_list.rb b/lib/ruby_ui/command/command_list.rb similarity index 94% rename from lib/rbui/command/command_list.rb rename to lib/ruby_ui/command/command_list.rb index f99876db..990872c3 100644 --- a/lib/rbui/command/command_list.rb +++ b/lib/ruby_ui/command/command_list.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class CommandList < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/context_menu/context_menu.rb b/lib/ruby_ui/context_menu/context_menu.rb similarity index 96% rename from lib/rbui/context_menu/context_menu.rb rename to lib/ruby_ui/context_menu/context_menu.rb index 1d33370b..6edc481d 100644 --- a/lib/rbui/context_menu/context_menu.rb +++ b/lib/ruby_ui/context_menu/context_menu.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ContextMenu < Base def initialize(options: {}, **attrs) @options = options diff --git a/lib/rbui/context_menu/context_menu_content.rb b/lib/ruby_ui/context_menu/context_menu_content.rb similarity index 98% rename from lib/rbui/context_menu/context_menu_content.rb rename to lib/ruby_ui/context_menu/context_menu_content.rb index 4c2bbf85..d9ff07e7 100644 --- a/lib/rbui/context_menu/context_menu_content.rb +++ b/lib/ruby_ui/context_menu/context_menu_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ContextMenuContent < Base def view_template(&block) all_template_tag(data: {rbui__context_menu_target: "content"}) do diff --git a/lib/rbui/context_menu/context_menu_controller.js b/lib/ruby_ui/context_menu/context_menu_controller.js similarity index 100% rename from lib/rbui/context_menu/context_menu_controller.js rename to lib/ruby_ui/context_menu/context_menu_controller.js diff --git a/lib/rbui/context_menu/context_menu_item.rb b/lib/ruby_ui/context_menu/context_menu_item.rb similarity index 99% rename from lib/rbui/context_menu/context_menu_item.rb rename to lib/ruby_ui/context_menu/context_menu_item.rb index ab3580a0..ff827c45 100644 --- a/lib/rbui/context_menu/context_menu_item.rb +++ b/lib/ruby_ui/context_menu/context_menu_item.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ContextMenuItem < Base def initialize(href: "#", checked: false, shortcut: nil, disabled: false, **attrs) @href = href diff --git a/lib/rbui/context_menu/context_menu_label.rb b/lib/ruby_ui/context_menu/context_menu_label.rb similarity index 96% rename from lib/rbui/context_menu/context_menu_label.rb rename to lib/ruby_ui/context_menu/context_menu_label.rb index 46e779f7..0c6b6b86 100644 --- a/lib/rbui/context_menu/context_menu_label.rb +++ b/lib/ruby_ui/context_menu/context_menu_label.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ContextMenuLabel < Base def initialize(inset: false, **attrs) @inset = inset diff --git a/lib/rbui/context_menu/context_menu_separator.rb b/lib/ruby_ui/context_menu/context_menu_separator.rb similarity index 95% rename from lib/rbui/context_menu/context_menu_separator.rb rename to lib/ruby_ui/context_menu/context_menu_separator.rb index 19afc01c..6b0a50d3 100644 --- a/lib/rbui/context_menu/context_menu_separator.rb +++ b/lib/ruby_ui/context_menu/context_menu_separator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ContextMenuSeparator < Base def view_template div(**attrs) diff --git a/lib/rbui/context_menu/context_menu_trigger.rb b/lib/ruby_ui/context_menu/context_menu_trigger.rb similarity index 95% rename from lib/rbui/context_menu/context_menu_trigger.rb rename to lib/ruby_ui/context_menu/context_menu_trigger.rb index 9cc7c5a7..0bb0f04e 100644 --- a/lib/rbui/context_menu/context_menu_trigger.rb +++ b/lib/ruby_ui/context_menu/context_menu_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ContextMenuTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/dialog/dialog.rb b/lib/ruby_ui/dialog/dialog.rb similarity index 96% rename from lib/rbui/dialog/dialog.rb rename to lib/ruby_ui/dialog/dialog.rb index 9800e99e..c2444c8b 100644 --- a/lib/rbui/dialog/dialog.rb +++ b/lib/ruby_ui/dialog/dialog.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Dialog < Base def initialize(open: false, **attrs) @open = open diff --git a/lib/rbui/dialog/dialog_content.rb b/lib/ruby_ui/dialog/dialog_content.rb similarity index 99% rename from lib/rbui/dialog/dialog_content.rb rename to lib/ruby_ui/dialog/dialog_content.rb index d81d1975..309d7b92 100644 --- a/lib/rbui/dialog/dialog_content.rb +++ b/lib/ruby_ui/dialog/dialog_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DialogContent < Base SIZES = { xs: "max-w-sm", diff --git a/lib/rbui/dialog/dialog_controller.js b/lib/ruby_ui/dialog/dialog_controller.js similarity index 100% rename from lib/rbui/dialog/dialog_controller.js rename to lib/ruby_ui/dialog/dialog_controller.js diff --git a/lib/rbui/dialog/dialog_description.rb b/lib/ruby_ui/dialog/dialog_description.rb similarity index 94% rename from lib/rbui/dialog/dialog_description.rb rename to lib/ruby_ui/dialog/dialog_description.rb index 0efa4301..2da33bda 100644 --- a/lib/rbui/dialog/dialog_description.rb +++ b/lib/ruby_ui/dialog/dialog_description.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DialogDescription < Base def view_template(&) p(**attrs, &) diff --git a/lib/rbui/dialog/dialog_footer.rb b/lib/ruby_ui/dialog/dialog_footer.rb similarity index 95% rename from lib/rbui/dialog/dialog_footer.rb rename to lib/ruby_ui/dialog/dialog_footer.rb index 43fdb58b..88277df0 100644 --- a/lib/rbui/dialog/dialog_footer.rb +++ b/lib/ruby_ui/dialog/dialog_footer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DialogFooter < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/dialog/dialog_header.rb b/lib/ruby_ui/dialog/dialog_header.rb similarity index 94% rename from lib/rbui/dialog/dialog_header.rb rename to lib/ruby_ui/dialog/dialog_header.rb index 097eb501..cb7d9b5c 100644 --- a/lib/rbui/dialog/dialog_header.rb +++ b/lib/ruby_ui/dialog/dialog_header.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DialogHeader < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/dialog/dialog_middle.rb b/lib/ruby_ui/dialog/dialog_middle.rb similarity index 93% rename from lib/rbui/dialog/dialog_middle.rb rename to lib/ruby_ui/dialog/dialog_middle.rb index c0cf6665..aa8a9072 100644 --- a/lib/rbui/dialog/dialog_middle.rb +++ b/lib/ruby_ui/dialog/dialog_middle.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DialogMiddle < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/dialog/dialog_title.rb b/lib/ruby_ui/dialog/dialog_title.rb similarity index 94% rename from lib/rbui/dialog/dialog_title.rb rename to lib/ruby_ui/dialog/dialog_title.rb index eb448971..fce48fa7 100644 --- a/lib/rbui/dialog/dialog_title.rb +++ b/lib/ruby_ui/dialog/dialog_title.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DialogTitle < Base def view_template(&) h3(**attrs, &) diff --git a/lib/rbui/dialog/dialog_trigger.rb b/lib/ruby_ui/dialog/dialog_trigger.rb similarity index 95% rename from lib/rbui/dialog/dialog_trigger.rb rename to lib/ruby_ui/dialog/dialog_trigger.rb index 97423f39..c558715e 100644 --- a/lib/rbui/dialog/dialog_trigger.rb +++ b/lib/ruby_ui/dialog/dialog_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DialogTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/dropdown_menu/dropdown_menu.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu.rb similarity index 97% rename from lib/rbui/dropdown_menu/dropdown_menu.rb rename to lib/ruby_ui/dropdown_menu/dropdown_menu.rb index d004417c..0e44571f 100644 --- a/lib/rbui/dropdown_menu/dropdown_menu.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DropdownMenu < Base def initialize(options: {}, **attrs) @options = options diff --git a/lib/rbui/dropdown_menu/dropdown_menu_content.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu_content.rb similarity index 98% rename from lib/rbui/dropdown_menu/dropdown_menu_content.rb rename to lib/ruby_ui/dropdown_menu/dropdown_menu_content.rb index f2ddb87e..b5a3ccce 100644 --- a/lib/rbui/dropdown_menu/dropdown_menu_content.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DropdownMenuContent < Base def view_template(&block) div(data: {rbui__dropdown_menu_target: "content"}, class: "hidden", style: "width: max-content; position: absolute; top: 0; left: 0;") do diff --git a/lib/rbui/dropdown_menu/dropdown_menu_controller.js b/lib/ruby_ui/dropdown_menu/dropdown_menu_controller.js similarity index 100% rename from lib/rbui/dropdown_menu/dropdown_menu_controller.js rename to lib/ruby_ui/dropdown_menu/dropdown_menu_controller.js diff --git a/lib/rbui/dropdown_menu/dropdown_menu_item.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu_item.rb similarity index 98% rename from lib/rbui/dropdown_menu/dropdown_menu_item.rb rename to lib/ruby_ui/dropdown_menu/dropdown_menu_item.rb index c9cf38f4..56fd0d0b 100644 --- a/lib/rbui/dropdown_menu/dropdown_menu_item.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu_item.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DropdownMenuItem < Base def initialize(href: "#", **attrs) @href = href diff --git a/lib/rbui/dropdown_menu/dropdown_menu_label.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu_label.rb similarity index 94% rename from lib/rbui/dropdown_menu/dropdown_menu_label.rb rename to lib/ruby_ui/dropdown_menu/dropdown_menu_label.rb index cf8c10b7..1a29ee72 100644 --- a/lib/rbui/dropdown_menu/dropdown_menu_label.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu_label.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DropdownMenuLabel < Base def view_template(&) h3(**attrs, &) diff --git a/lib/rbui/dropdown_menu/dropdown_menu_separator.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu_separator.rb similarity index 95% rename from lib/rbui/dropdown_menu/dropdown_menu_separator.rb rename to lib/ruby_ui/dropdown_menu/dropdown_menu_separator.rb index e5fc565f..030064b1 100644 --- a/lib/rbui/dropdown_menu/dropdown_menu_separator.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu_separator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DropdownMenuSeparator < Base def view_template div(**attrs) diff --git a/lib/rbui/dropdown_menu/dropdown_menu_trigger.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu_trigger.rb similarity index 95% rename from lib/rbui/dropdown_menu/dropdown_menu_trigger.rb rename to lib/ruby_ui/dropdown_menu/dropdown_menu_trigger.rb index b363a5e5..ec312665 100644 --- a/lib/rbui/dropdown_menu/dropdown_menu_trigger.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class DropdownMenuTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/form/form.rb b/lib/ruby_ui/form/form.rb similarity index 92% rename from lib/rbui/form/form.rb rename to lib/ruby_ui/form/form.rb index 5ea73430..c34e7745 100644 --- a/lib/rbui/form/form.rb +++ b/lib/ruby_ui/form/form.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Form < Base def view_template(&) form(**attrs, &) diff --git a/lib/rbui/form/form_field.rb b/lib/ruby_ui/form/form_field.rb similarity index 95% rename from lib/rbui/form/form_field.rb rename to lib/ruby_ui/form/form_field.rb index e02d839c..cf649553 100644 --- a/lib/rbui/form/form_field.rb +++ b/lib/ruby_ui/form/form_field.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class FormField < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/form/form_field_controller.js b/lib/ruby_ui/form/form_field_controller.js similarity index 100% rename from lib/rbui/form/form_field_controller.js rename to lib/ruby_ui/form/form_field_controller.js diff --git a/lib/rbui/form/form_field_error.rb b/lib/ruby_ui/form/form_field_error.rb similarity index 95% rename from lib/rbui/form/form_field_error.rb rename to lib/ruby_ui/form/form_field_error.rb index 414296f3..2b5d6c0e 100644 --- a/lib/rbui/form/form_field_error.rb +++ b/lib/ruby_ui/form/form_field_error.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class FormFieldError < Base def view_template(&) p(**attrs, &) diff --git a/lib/rbui/form/form_field_hint.rb b/lib/ruby_ui/form/form_field_hint.rb similarity index 93% rename from lib/rbui/form/form_field_hint.rb rename to lib/ruby_ui/form/form_field_hint.rb index a4d3b038..5304a259 100644 --- a/lib/rbui/form/form_field_hint.rb +++ b/lib/ruby_ui/form/form_field_hint.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class FormFieldHint < Base def view_template(&) p(**attrs, &) diff --git a/lib/rbui/form/form_field_label.rb b/lib/ruby_ui/form/form_field_label.rb similarity index 95% rename from lib/rbui/form/form_field_label.rb rename to lib/ruby_ui/form/form_field_label.rb index 13ae7a25..032ada13 100644 --- a/lib/rbui/form/form_field_label.rb +++ b/lib/ruby_ui/form/form_field_label.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class FormFieldLabel < Base def view_template(&) label(**attrs, &) diff --git a/lib/rbui/hover_card/hover_card.rb b/lib/ruby_ui/hover_card/hover_card.rb similarity index 97% rename from lib/rbui/hover_card/hover_card.rb rename to lib/ruby_ui/hover_card/hover_card.rb index b9251c70..1fe6d3a5 100644 --- a/lib/rbui/hover_card/hover_card.rb +++ b/lib/ruby_ui/hover_card/hover_card.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class HoverCard < Base def initialize(option: {}, **attrs) @options = option diff --git a/lib/rbui/hover_card/hover_card_content.rb b/lib/ruby_ui/hover_card/hover_card_content.rb similarity index 98% rename from lib/rbui/hover_card/hover_card_content.rb rename to lib/ruby_ui/hover_card/hover_card_content.rb index b26384bc..d9957c9f 100644 --- a/lib/rbui/hover_card/hover_card_content.rb +++ b/lib/ruby_ui/hover_card/hover_card_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class HoverCardContent < Base def view_template(&block) all_template_tag(data: {rbui__hover_card_target: "content"}) do diff --git a/lib/rbui/hover_card/hover_card_controller.js b/lib/ruby_ui/hover_card/hover_card_controller.js similarity index 100% rename from lib/rbui/hover_card/hover_card_controller.js rename to lib/ruby_ui/hover_card/hover_card_controller.js diff --git a/lib/rbui/hover_card/hover_card_trigger.rb b/lib/ruby_ui/hover_card/hover_card_trigger.rb similarity index 95% rename from lib/rbui/hover_card/hover_card_trigger.rb rename to lib/ruby_ui/hover_card/hover_card_trigger.rb index 1713212e..ab7428f5 100644 --- a/lib/rbui/hover_card/hover_card_trigger.rb +++ b/lib/ruby_ui/hover_card/hover_card_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class HoverCardTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/index.js b/lib/ruby_ui/index.js similarity index 98% rename from lib/rbui/index.js rename to lib/ruby_ui/index.js index 838a546b..1f7c0942 100644 --- a/lib/rbui/index.js +++ b/lib/ruby_ui/index.js @@ -61,10 +61,10 @@ function initialize(application) { registerIfNotExists("rbui--sheet-content", SheetContentController); } -const RBUI = { +const RubyUI = { initialize, }; -export default RBUI; +export default RubyUI; export { initialize }; diff --git a/lib/rbui/input/input.rb b/lib/ruby_ui/input/input.rb similarity index 98% rename from lib/rbui/input/input.rb rename to lib/ruby_ui/input/input.rb index d8c127c7..2fcd549f 100644 --- a/lib/rbui/input/input.rb +++ b/lib/ruby_ui/input/input.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Input < Base def initialize(type: :string, **attrs) @type = type.to_sym diff --git a/lib/rbui/link/link.rb b/lib/ruby_ui/link/link.rb similarity index 99% rename from lib/rbui/link/link.rb rename to lib/ruby_ui/link/link.rb index 083c316c..528ea507 100644 --- a/lib/rbui/link/link.rb +++ b/lib/ruby_ui/link/link.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Link < Base def initialize(href: "#", variant: :link, size: :md, icon: false, **attrs) @href = href diff --git a/lib/rbui/pagination/pagination.rb b/lib/ruby_ui/pagination/pagination.rb similarity index 95% rename from lib/rbui/pagination/pagination.rb rename to lib/ruby_ui/pagination/pagination.rb index 839e93d6..dfc64369 100644 --- a/lib/rbui/pagination/pagination.rb +++ b/lib/ruby_ui/pagination/pagination.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Pagination < Base def view_template(&) nav(**attrs, &) diff --git a/lib/rbui/pagination/pagination_content.rb b/lib/ruby_ui/pagination/pagination_content.rb similarity index 94% rename from lib/rbui/pagination/pagination_content.rb rename to lib/ruby_ui/pagination/pagination_content.rb index 2fd0e433..135f403a 100644 --- a/lib/rbui/pagination/pagination_content.rb +++ b/lib/ruby_ui/pagination/pagination_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class PaginationContent < Base def view_template(&) ul(**attrs, &) diff --git a/lib/rbui/pagination/pagination_ellipsis.rb b/lib/ruby_ui/pagination/pagination_ellipsis.rb similarity index 98% rename from lib/rbui/pagination/pagination_ellipsis.rb rename to lib/ruby_ui/pagination/pagination_ellipsis.rb index b59a4b87..10b26783 100644 --- a/lib/rbui/pagination/pagination_ellipsis.rb +++ b/lib/ruby_ui/pagination/pagination_ellipsis.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class PaginationEllipsis < Base def view_template(&block) li do diff --git a/lib/rbui/pagination/pagination_item.rb b/lib/ruby_ui/pagination/pagination_item.rb similarity index 82% rename from lib/rbui/pagination/pagination_item.rb rename to lib/ruby_ui/pagination/pagination_item.rb index 3a211d1d..d9add897 100644 --- a/lib/rbui/pagination/pagination_item.rb +++ b/lib/ruby_ui/pagination/pagination_item.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class PaginationItem < Base def initialize(href: "#", active: false, **attrs) @href = href @@ -20,7 +20,7 @@ def default_attrs { aria: {current: @active ? "page" : nil}, class: [ - RBUI::Button.new(variant: @active ? :outline : :ghost).attrs[:class] + RubyUI::Button.new(variant: @active ? :outline : :ghost).attrs[:class] ] } end diff --git a/lib/rbui/popover/popover.rb b/lib/ruby_ui/popover/popover.rb similarity index 97% rename from lib/rbui/popover/popover.rb rename to lib/ruby_ui/popover/popover.rb index 28dd4301..b239fb43 100644 --- a/lib/rbui/popover/popover.rb +++ b/lib/ruby_ui/popover/popover.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Popover < Base def initialize(options: {}, **attrs) @options = options diff --git a/lib/rbui/popover/popover_content.rb b/lib/ruby_ui/popover/popover_content.rb similarity index 98% rename from lib/rbui/popover/popover_content.rb rename to lib/ruby_ui/popover/popover_content.rb index 34e44eaa..36dd4d85 100644 --- a/lib/rbui/popover/popover_content.rb +++ b/lib/ruby_ui/popover/popover_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class PopoverContent < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/popover/popover_controller.js b/lib/ruby_ui/popover/popover_controller.js similarity index 100% rename from lib/rbui/popover/popover_controller.js rename to lib/ruby_ui/popover/popover_controller.js diff --git a/lib/rbui/popover/popover_trigger.rb b/lib/ruby_ui/popover/popover_trigger.rb similarity index 95% rename from lib/rbui/popover/popover_trigger.rb rename to lib/ruby_ui/popover/popover_trigger.rb index e9ad61f3..01981552 100644 --- a/lib/rbui/popover/popover_trigger.rb +++ b/lib/ruby_ui/popover/popover_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class PopoverTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/radio_button/radio_button.rb b/lib/ruby_ui/radio_button/radio_button.rb similarity index 96% rename from lib/rbui/radio_button/radio_button.rb rename to lib/ruby_ui/radio_button/radio_button.rb index a99ae303..3584ebaa 100644 --- a/lib/rbui/radio_button/radio_button.rb +++ b/lib/ruby_ui/radio_button/radio_button.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class RadioButton < Base def view_template input(**attrs) diff --git a/lib/rbui/railtie.rb b/lib/ruby_ui/railtie.rb similarity index 71% rename from lib/rbui/railtie.rb rename to lib/ruby_ui/railtie.rb index 992832dd..d70122e8 100644 --- a/lib/rbui/railtie.rb +++ b/lib/ruby_ui/railtie.rb @@ -1,4 +1,4 @@ -module RBUI +module RubyUI if defined?(Rails) class Railtie < ::Rails::Railtie generators do @@ -9,29 +9,29 @@ class Railtie < ::Rails::Railtie end initializer "rbui.set_generator_namespace" do - Rails::Generators.namespace(RBUI::Generators, as: "rbui") + Rails::Generators.namespace(RubyUI::Generators, as: "rbui") end end # Add component loading config.to_prepare do - # Define the path to the RBUI components + # Define the path to the RubyUI components rbui_components_path = Rails.root.join("app/components/rbui") - # Check if the RBUI components directory exists + # Check if the RubyUI components directory exists if Dir.exist?(rbui_components_path) - # Find all Ruby files in the RBUI components directory and its subdirectories + # Find all Ruby files in the RubyUI components directory and its subdirectories Dir[rbui_components_path.join("**", "*.rb")].each do |file| - # Get the relative path of the file from the RBUI components directory + # Get the relative path of the file from the RubyUI components directory relative_path = Pathname.new(file).relative_path_from(rbui_components_path) # Convert the file path to a component name # e.g., "form/input.rb" becomes ["Form", "Input"] component_name_parts = relative_path.to_s.chomp(".rb").split("/").map(&:camelize) - # Create the full component name with RBUI namespace - # e.g., "RBUI::Form::Input" - full_component_name = "RBUI::#{component_name_parts.join("::")}" + # Create the full component name with RubyUI namespace + # e.g., "RubyUI::Form::Input" + full_component_name = "RubyUI::#{component_name_parts.join("::")}" begin # Check if the component is already defined diff --git a/lib/rbui/select/select.rb b/lib/ruby_ui/select/select.rb similarity index 96% rename from lib/rbui/select/select.rb rename to lib/ruby_ui/select/select.rb index 5d3705dc..ad309a28 100644 --- a/lib/rbui/select/select.rb +++ b/lib/ruby_ui/select/select.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Select < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/select/select_content.rb b/lib/ruby_ui/select/select_content.rb similarity index 98% rename from lib/rbui/select/select_content.rb rename to lib/ruby_ui/select/select_content.rb index 60554be9..a694a81b 100644 --- a/lib/rbui/select/select_content.rb +++ b/lib/ruby_ui/select/select_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SelectContent < Base def initialize(**attrs) @id = "content#{SecureRandom.hex(4)}" diff --git a/lib/rbui/select/select_controller.js b/lib/ruby_ui/select/select_controller.js similarity index 100% rename from lib/rbui/select/select_controller.js rename to lib/ruby_ui/select/select_controller.js diff --git a/lib/rbui/select/select_group.rb b/lib/ruby_ui/select/select_group.rb similarity index 92% rename from lib/rbui/select/select_group.rb rename to lib/ruby_ui/select/select_group.rb index bc9c7efe..e22d8d22 100644 --- a/lib/rbui/select/select_group.rb +++ b/lib/ruby_ui/select/select_group.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SelectGroup < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/select/select_input.rb b/lib/ruby_ui/select/select_input.rb similarity index 96% rename from lib/rbui/select/select_input.rb rename to lib/ruby_ui/select/select_input.rb index 3f3e02d5..230d272f 100644 --- a/lib/rbui/select/select_input.rb +++ b/lib/ruby_ui/select/select_input.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SelectInput < Base def view_template input(**attrs) diff --git a/lib/rbui/select/select_item.rb b/lib/ruby_ui/select/select_item.rb similarity index 99% rename from lib/rbui/select/select_item.rb rename to lib/ruby_ui/select/select_item.rb index fb8c6a34..99870eb8 100644 --- a/lib/rbui/select/select_item.rb +++ b/lib/ruby_ui/select/select_item.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SelectItem < Base def initialize(value: nil, **attrs) @value = value diff --git a/lib/rbui/select/select_item_controller.js b/lib/ruby_ui/select/select_item_controller.js similarity index 100% rename from lib/rbui/select/select_item_controller.js rename to lib/ruby_ui/select/select_item_controller.js diff --git a/lib/rbui/select/select_label.rb b/lib/ruby_ui/select/select_label.rb similarity index 94% rename from lib/rbui/select/select_label.rb rename to lib/ruby_ui/select/select_label.rb index 7f1029bc..99feee83 100644 --- a/lib/rbui/select/select_label.rb +++ b/lib/ruby_ui/select/select_label.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SelectLabel < Base def view_template(&) h3(**attrs, &) diff --git a/lib/rbui/select/select_trigger.rb b/lib/ruby_ui/select/select_trigger.rb similarity index 98% rename from lib/rbui/select/select_trigger.rb rename to lib/ruby_ui/select/select_trigger.rb index e3b16fa5..28f442ff 100644 --- a/lib/rbui/select/select_trigger.rb +++ b/lib/ruby_ui/select/select_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SelectTrigger < Base def view_template(&block) button(**attrs) do diff --git a/lib/rbui/select/select_value.rb b/lib/ruby_ui/select/select_value.rb similarity index 97% rename from lib/rbui/select/select_value.rb rename to lib/ruby_ui/select/select_value.rb index dbae3c00..ad8acf37 100644 --- a/lib/rbui/select/select_value.rb +++ b/lib/ruby_ui/select/select_value.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SelectValue < Base def initialize(placeholder: nil, **attrs) @placeholder = placeholder diff --git a/lib/rbui/sheet/sheet.rb b/lib/ruby_ui/sheet/sheet.rb similarity index 93% rename from lib/rbui/sheet/sheet.rb rename to lib/ruby_ui/sheet/sheet.rb index 6d0c50f4..640aba67 100644 --- a/lib/rbui/sheet/sheet.rb +++ b/lib/ruby_ui/sheet/sheet.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Sheet < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/sheet/sheet_content.rb b/lib/ruby_ui/sheet/sheet_content.rb similarity index 99% rename from lib/rbui/sheet/sheet_content.rb rename to lib/ruby_ui/sheet/sheet_content.rb index 680b706c..a288814f 100644 --- a/lib/rbui/sheet/sheet_content.rb +++ b/lib/ruby_ui/sheet/sheet_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SheetContent < Base SIDE_CLASS = { top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top", diff --git a/lib/rbui/sheet/sheet_content_controller.js b/lib/ruby_ui/sheet/sheet_content_controller.js similarity index 100% rename from lib/rbui/sheet/sheet_content_controller.js rename to lib/ruby_ui/sheet/sheet_content_controller.js diff --git a/lib/rbui/sheet/sheet_controller.js b/lib/ruby_ui/sheet/sheet_controller.js similarity index 100% rename from lib/rbui/sheet/sheet_controller.js rename to lib/ruby_ui/sheet/sheet_controller.js diff --git a/lib/rbui/sheet/sheet_description.rb b/lib/ruby_ui/sheet/sheet_description.rb similarity index 94% rename from lib/rbui/sheet/sheet_description.rb rename to lib/ruby_ui/sheet/sheet_description.rb index bc127aa6..1edc1459 100644 --- a/lib/rbui/sheet/sheet_description.rb +++ b/lib/ruby_ui/sheet/sheet_description.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SheetDescription < Base def view_template(&) p(**attrs, &) diff --git a/lib/rbui/sheet/sheet_footer.rb b/lib/ruby_ui/sheet/sheet_footer.rb similarity index 95% rename from lib/rbui/sheet/sheet_footer.rb rename to lib/ruby_ui/sheet/sheet_footer.rb index 2ed204b3..36cc4ded 100644 --- a/lib/rbui/sheet/sheet_footer.rb +++ b/lib/ruby_ui/sheet/sheet_footer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SheetFooter < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/sheet/sheet_header.rb b/lib/ruby_ui/sheet/sheet_header.rb similarity index 94% rename from lib/rbui/sheet/sheet_header.rb rename to lib/ruby_ui/sheet/sheet_header.rb index ddcee85f..08626ee3 100644 --- a/lib/rbui/sheet/sheet_header.rb +++ b/lib/ruby_ui/sheet/sheet_header.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SheetHeader < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/sheet/sheet_middle.rb b/lib/ruby_ui/sheet/sheet_middle.rb similarity index 93% rename from lib/rbui/sheet/sheet_middle.rb rename to lib/ruby_ui/sheet/sheet_middle.rb index 58c2ae78..10648ab6 100644 --- a/lib/rbui/sheet/sheet_middle.rb +++ b/lib/ruby_ui/sheet/sheet_middle.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SheetMiddle < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/sheet/sheet_title.rb b/lib/ruby_ui/sheet/sheet_title.rb similarity index 94% rename from lib/rbui/sheet/sheet_title.rb rename to lib/ruby_ui/sheet/sheet_title.rb index 57b866a4..891a29b0 100644 --- a/lib/rbui/sheet/sheet_title.rb +++ b/lib/ruby_ui/sheet/sheet_title.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SheetTitle < Base def view_template(&) h3(**attrs, &) diff --git a/lib/rbui/sheet/sheet_trigger.rb b/lib/ruby_ui/sheet/sheet_trigger.rb similarity index 94% rename from lib/rbui/sheet/sheet_trigger.rb rename to lib/ruby_ui/sheet/sheet_trigger.rb index f93970cb..4348796a 100644 --- a/lib/rbui/sheet/sheet_trigger.rb +++ b/lib/ruby_ui/sheet/sheet_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class SheetTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/shortcut_key/shortcut_key.rb b/lib/ruby_ui/shortcut_key/shortcut_key.rb similarity index 96% rename from lib/rbui/shortcut_key/shortcut_key.rb rename to lib/ruby_ui/shortcut_key/shortcut_key.rb index 0d3e4e93..257d42ad 100644 --- a/lib/rbui/shortcut_key/shortcut_key.rb +++ b/lib/ruby_ui/shortcut_key/shortcut_key.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ShortcutKey < Base def view_template(&) kbd(**attrs, &) diff --git a/lib/rbui/table/table.rb b/lib/ruby_ui/table/table.rb similarity index 95% rename from lib/rbui/table/table.rb rename to lib/ruby_ui/table/table.rb index aa1cbbd1..d3f2c373 100644 --- a/lib/rbui/table/table.rb +++ b/lib/ruby_ui/table/table.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Table < Base def view_template(&block) div(class: "relative w-full overflow-auto") do diff --git a/lib/rbui/table/table_body.rb b/lib/ruby_ui/table/table_body.rb similarity index 94% rename from lib/rbui/table/table_body.rb rename to lib/ruby_ui/table/table_body.rb index eb67515b..84891e20 100644 --- a/lib/rbui/table/table_body.rb +++ b/lib/ruby_ui/table/table_body.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TableBody < Base def view_template(&) tbody(**attrs, &) diff --git a/lib/rbui/table/table_caption.rb b/lib/ruby_ui/table/table_caption.rb similarity index 94% rename from lib/rbui/table/table_caption.rb rename to lib/ruby_ui/table/table_caption.rb index 538b4b16..21335a8b 100644 --- a/lib/rbui/table/table_caption.rb +++ b/lib/ruby_ui/table/table_caption.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TableCaption < Base def view_template(&) caption(**attrs, &) diff --git a/lib/rbui/table/table_cell.rb b/lib/ruby_ui/table/table_cell.rb similarity index 95% rename from lib/rbui/table/table_cell.rb rename to lib/ruby_ui/table/table_cell.rb index a51877ea..6d7e3539 100644 --- a/lib/rbui/table/table_cell.rb +++ b/lib/ruby_ui/table/table_cell.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TableCell < Base def view_template(&) td(**attrs, &) diff --git a/lib/rbui/table/table_footer.rb b/lib/ruby_ui/table/table_footer.rb similarity index 95% rename from lib/rbui/table/table_footer.rb rename to lib/ruby_ui/table/table_footer.rb index 8f7cd1f3..156d7683 100644 --- a/lib/rbui/table/table_footer.rb +++ b/lib/ruby_ui/table/table_footer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TableFooter < Base def view_template(&) tfoot(**attrs, &) diff --git a/lib/rbui/table/table_head.rb b/lib/ruby_ui/table/table_head.rb similarity index 95% rename from lib/rbui/table/table_head.rb rename to lib/ruby_ui/table/table_head.rb index 83b9ae1e..c0c8d0e4 100644 --- a/lib/rbui/table/table_head.rb +++ b/lib/ruby_ui/table/table_head.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TableHead < Base def view_template(&) th(**attrs, &) diff --git a/lib/rbui/table/table_header.rb b/lib/ruby_ui/table/table_header.rb similarity index 93% rename from lib/rbui/table/table_header.rb rename to lib/ruby_ui/table/table_header.rb index 32b868c8..5d632e8c 100644 --- a/lib/rbui/table/table_header.rb +++ b/lib/ruby_ui/table/table_header.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TableHeader < Base def view_template(&) thead(**attrs, &) diff --git a/lib/rbui/table/table_row.rb b/lib/ruby_ui/table/table_row.rb similarity index 95% rename from lib/rbui/table/table_row.rb rename to lib/ruby_ui/table/table_row.rb index c50dfcb2..4b451df7 100644 --- a/lib/rbui/table/table_row.rb +++ b/lib/ruby_ui/table/table_row.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TableRow < Base def view_template(&) tr(**attrs, &) diff --git a/lib/rbui/tabs/tabs.rb b/lib/ruby_ui/tabs/tabs.rb similarity index 96% rename from lib/rbui/tabs/tabs.rb rename to lib/ruby_ui/tabs/tabs.rb index 4d67f8d2..21748126 100644 --- a/lib/rbui/tabs/tabs.rb +++ b/lib/ruby_ui/tabs/tabs.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Tabs < Base def initialize(default: nil, **attrs) @default = default diff --git a/lib/rbui/tabs/tabs_content.rb b/lib/ruby_ui/tabs/tabs_content.rb similarity index 97% rename from lib/rbui/tabs/tabs_content.rb rename to lib/ruby_ui/tabs/tabs_content.rb index 5c7055f2..fc7483d3 100644 --- a/lib/rbui/tabs/tabs_content.rb +++ b/lib/ruby_ui/tabs/tabs_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TabsContent < Base def initialize(value:, **attrs) @value = value diff --git a/lib/rbui/tabs/tabs_controller.js b/lib/ruby_ui/tabs/tabs_controller.js similarity index 100% rename from lib/rbui/tabs/tabs_controller.js rename to lib/ruby_ui/tabs/tabs_controller.js diff --git a/lib/rbui/tabs/tabs_list.rb b/lib/ruby_ui/tabs/tabs_list.rb similarity index 95% rename from lib/rbui/tabs/tabs_list.rb rename to lib/ruby_ui/tabs/tabs_list.rb index aa31adc2..650e00c0 100644 --- a/lib/rbui/tabs/tabs_list.rb +++ b/lib/ruby_ui/tabs/tabs_list.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TabsList < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/tabs/tabs_trigger.rb b/lib/ruby_ui/tabs/tabs_trigger.rb similarity index 98% rename from lib/rbui/tabs/tabs_trigger.rb rename to lib/ruby_ui/tabs/tabs_trigger.rb index eac6b0df..c6ca2d97 100644 --- a/lib/rbui/tabs/tabs_trigger.rb +++ b/lib/ruby_ui/tabs/tabs_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TabsTrigger < Base def initialize(value:, **attrs) @value = value diff --git a/lib/rbui/textarea/textarea.rb b/lib/ruby_ui/textarea/textarea.rb similarity index 98% rename from lib/rbui/textarea/textarea.rb rename to lib/ruby_ui/textarea/textarea.rb index 5600aabe..dfa09bf4 100644 --- a/lib/rbui/textarea/textarea.rb +++ b/lib/ruby_ui/textarea/textarea.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Textarea < Base def initialize(rows: 4, **attrs) @rows = rows diff --git a/lib/rbui/theme_toggle/theme_toggle.rb b/lib/ruby_ui/theme_toggle/theme_toggle.rb similarity index 98% rename from lib/rbui/theme_toggle/theme_toggle.rb rename to lib/ruby_ui/theme_toggle/theme_toggle.rb index 3a14041c..fecadf4e 100644 --- a/lib/rbui/theme_toggle/theme_toggle.rb +++ b/lib/ruby_ui/theme_toggle/theme_toggle.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class ThemeToggle < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/theme_toggle/theme_toggle_controller.js b/lib/ruby_ui/theme_toggle/theme_toggle_controller.js similarity index 100% rename from lib/rbui/theme_toggle/theme_toggle_controller.js rename to lib/ruby_ui/theme_toggle/theme_toggle_controller.js diff --git a/lib/rbui/tooltip/tooltip.rb b/lib/ruby_ui/tooltip/tooltip.rb similarity index 96% rename from lib/rbui/tooltip/tooltip.rb rename to lib/ruby_ui/tooltip/tooltip.rb index 74e21677..6c9d0e82 100644 --- a/lib/rbui/tooltip/tooltip.rb +++ b/lib/ruby_ui/tooltip/tooltip.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Tooltip < Base def initialize(placement: "top", **attrs) @placement = placement diff --git a/lib/rbui/tooltip/tooltip_content.rb b/lib/ruby_ui/tooltip/tooltip_content.rb similarity index 98% rename from lib/rbui/tooltip/tooltip_content.rb rename to lib/ruby_ui/tooltip/tooltip_content.rb index 0cfe4377..da83f5d8 100644 --- a/lib/rbui/tooltip/tooltip_content.rb +++ b/lib/ruby_ui/tooltip/tooltip_content.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TooltipContent < Base def initialize(**attrs) @id = "tooltip#{SecureRandom.hex(4)}" diff --git a/lib/rbui/tooltip/tooltip_controller.js b/lib/ruby_ui/tooltip/tooltip_controller.js similarity index 100% rename from lib/rbui/tooltip/tooltip_controller.js rename to lib/ruby_ui/tooltip/tooltip_controller.js diff --git a/lib/rbui/tooltip/tooltip_trigger.rb b/lib/ruby_ui/tooltip/tooltip_trigger.rb similarity index 95% rename from lib/rbui/tooltip/tooltip_trigger.rb rename to lib/ruby_ui/tooltip/tooltip_trigger.rb index 6be872cb..aab6583e 100644 --- a/lib/rbui/tooltip/tooltip_trigger.rb +++ b/lib/ruby_ui/tooltip/tooltip_trigger.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TooltipTrigger < Base def view_template(&) div(**attrs, &) diff --git a/lib/rbui/typography/heading.rb b/lib/ruby_ui/typography/heading.rb similarity index 98% rename from lib/rbui/typography/heading.rb rename to lib/ruby_ui/typography/heading.rb index 30a1dabe..bd883c0f 100644 --- a/lib/rbui/typography/heading.rb +++ b/lib/ruby_ui/typography/heading.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Heading < Base def initialize(level: nil, as: nil, size: nil, **attrs) @level = level diff --git a/lib/rbui/typography/inline_code.rb b/lib/ruby_ui/typography/inline_code.rb similarity index 95% rename from lib/rbui/typography/inline_code.rb rename to lib/ruby_ui/typography/inline_code.rb index 277dc443..539c9617 100644 --- a/lib/rbui/typography/inline_code.rb +++ b/lib/ruby_ui/typography/inline_code.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class InlineCode < Base def view_template(&) code(**attrs, &) diff --git a/lib/rbui/typography/inline_link.rb b/lib/ruby_ui/typography/inline_link.rb similarity index 96% rename from lib/rbui/typography/inline_link.rb rename to lib/ruby_ui/typography/inline_link.rb index 02332273..07929dd1 100644 --- a/lib/rbui/typography/inline_link.rb +++ b/lib/ruby_ui/typography/inline_link.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class InlineLink < Base def initialize(href:, **attrs) super(**attrs) diff --git a/lib/rbui/typography/text.rb b/lib/ruby_ui/typography/text.rb similarity index 98% rename from lib/rbui/typography/text.rb rename to lib/ruby_ui/typography/text.rb index 71848699..b3945936 100644 --- a/lib/rbui/typography/text.rb +++ b/lib/ruby_ui/typography/text.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class Text < Base def initialize(as: "p", size: "3", weight: "regular", **attrs) @as = as diff --git a/lib/rbui/typography/typography_blockquote.rb b/lib/ruby_ui/typography/typography_blockquote.rb similarity index 94% rename from lib/rbui/typography/typography_blockquote.rb rename to lib/ruby_ui/typography/typography_blockquote.rb index fd93b320..b4d4e843 100644 --- a/lib/rbui/typography/typography_blockquote.rb +++ b/lib/ruby_ui/typography/typography_blockquote.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module RBUI +module RubyUI class TypographyBlockquote < Base def view_template(&) blockquote(**attrs, &) diff --git a/lib/rbui/version.rb b/lib/ruby_ui/version.rb similarity index 81% rename from lib/rbui/version.rb rename to lib/ruby_ui/version.rb index ce71ba2b..8b278664 100644 --- a/lib/rbui/version.rb +++ b/lib/ruby_ui/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -module RBUI +module RubyUI VERSION = "1.0.0-alpha.4" end diff --git a/ruby_ui.gemspec b/ruby_ui.gemspec index dc5890c5..aba65bb6 100644 --- a/ruby_ui.gemspec +++ b/ruby_ui.gemspec @@ -2,7 +2,7 @@ require_relative "lib/rbui/version" Gem::Specification.new do |s| s.name = "ruby_ui" - s.version = RBUI::VERSION + s.version = RubyUI::VERSION s.summary = "RubyUI is a UI Component Library for Ruby developers." s.description = "Ruby UI is a UI Component Library for Ruby developers. Built on top of the Phlex Framework." s.authors = ["George Kettle"] diff --git a/test/rbui/alert_dialog_test.rb b/test/rbui/alert_dialog_test.rb deleted file mode 100644 index 485ff02d..00000000 --- a/test/rbui/alert_dialog_test.rb +++ /dev/null @@ -1,29 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::AlertDialogTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.AlertDialog do - RBUI.AlertDialogTrigger do - RBUI.Button { "Show dialog" } - end - RBUI.AlertDialogContent do - RBUI.AlertDialogHeader do - RBUI.AlertDialogTitle { "Are you absolutely sure?" } - RBUI.AlertDialogDescription { "This action cannot be undone. This will permanently delete your account and remove your data from our servers." } - end - RBUI.AlertDialogFooter do - RBUI.AlertDialogCancel { "Cancel" } - RBUI.AlertDialogAction { "Continue" } - end - end - end - end - - assert_match(/Show dialog/, output) - end -end diff --git a/test/rbui/calendar_test.rb b/test/rbui/calendar_test.rb deleted file mode 100644 index c5927ff7..00000000 --- a/test/rbui/calendar_test.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::CalendarTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Input(type: "string", placeholder: "Select a date", class: "rounded-md border shadow", id: "date", data_controller: "rbui--input") - RBUI.Calendar(input_id: "#date", class: "rounded-md border shadow") - end - - assert_match(/Select a date/, output) - end -end diff --git a/test/rbui/card_test.rb b/test/rbui/card_test.rb deleted file mode 100644 index 74e31b69..00000000 --- a/test/rbui/card_test.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::CardTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Card(class: "w-96") do - RBUI.CardHeader do - RBUI.CardTitle { 'You might like "RBUI"' } - RBUI.CardDescription { "@joeldrapper" } - end - RBUI.CardContent do - RBUI.AspectRatio(aspect_ratio: "16/9", class: "rounded-md overflow-hidden border") do |aspect_ratio| - aspect_ratio.img( - alt: "Placeholder", - loading: "lazy", - src: "https://avatars.githubusercontent.com/u/246692?v=4" - ) - end - end - RBUI.CardFooter(class: "flex justify-end gap-x-2") do - RBUI.Button(variant: :outline) { "See more" } - RBUI.Button(variant: :primary) { "Buy now" } - end - end - end - - assert_match(/You might like/, output) - end -end diff --git a/test/rbui/combobox_test.rb b/test/rbui/combobox_test.rb deleted file mode 100644 index d516c26f..00000000 --- a/test/rbui/combobox_test.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::ComboboxTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Combobox do - RBUI.ComboboxInput() - RBUI.ComboboxTrigger do - RBUI.ComboboxValue(placeholder: "Select event...") - end - RBUI.ComboboxContent do - RBUI.ComboboxSearchInput(placeholder: "Search event...") - RBUI.ComboboxList do - RBUI.ComboboxEmpty { "No results found." } - RBUI.ComboboxGroup(heading: "Suggestions") do - RBUI.ComboboxItem(value: "railsworld") do |item| - item.span { "Rails World" } - end - RBUI.ComboboxItem(value: "tropicalrb") do |item| - item.span { "Tropical.rb" } - end - RBUI.ComboboxItem(value: "friendly.rb") do |item| - item.span { "Friendly.rb" } - end - end - - RBUI.ComboboxSeparator() - - RBUI.ComboboxGroup(heading: "Others") do - RBUI.ComboboxItem(value: "railsconf") do |item| - item.span { "RailsConf" } - end - RBUI.ComboboxItem(value: "euruko") do |item| - item.span { "Euruko" } - end - RBUI.ComboboxItem(value: "rubykaigi") do |item| - item.span { "RubyKaigi" } - end - end - end - end - end - end - - assert_match(/Tropical.rb/, output) - end -end diff --git a/test/rbui/context_menu_test.rb b/test/rbui/context_menu_test.rb deleted file mode 100644 index c510d4c6..00000000 --- a/test/rbui/context_menu_test.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::ContextMenuTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.ContextMenu do - RBUI.ContextMenuTrigger(class: "flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm") { "Right click here" } - RBUI.ContextMenuContent(class: "w-64") do - RBUI.ContextMenuItem(href: "#", shortcut: "⌘[") { "Back" } - RBUI.ContextMenuItem(href: "#", shortcut: "⌘]", disabled: true) { "Forward" } - RBUI.ContextMenuItem(href: "#", shortcut: "⌘R") { "Reload" } - RBUI.ContextMenuSeparator - RBUI.ContextMenuItem(href: "#", shortcut: "⌘⇧B", checked: true) { "Show Bookmarks Bar" } - RBUI.ContextMenuItem(href: "#") { "Show Full URLs" } - RBUI.ContextMenuSeparator - RBUI.ContextMenuLabel(inset: true) { "More Tools" } - RBUI.ContextMenuSeparator - RBUI.ContextMenuItem(href: "#") { "Developer Tools" } - RBUI.ContextMenuItem(href: "#") { "Task Manager" } - RBUI.ContextMenuItem(href: "#") { "Extensions" } - end - end - end - - assert_match(/Right click here/, output) - end -end diff --git a/test/rbui/dialog_test.rb b/test/rbui/dialog_test.rb deleted file mode 100644 index 85cf8b74..00000000 --- a/test/rbui/dialog_test.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::DialogTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Dialog do - RBUI.DialogTrigger do - RBUI.Button { "Open Dialog" } - end - RBUI.DialogContent do - RBUI.DialogHeader do - RBUI.DialogTitle { "RBUI to the rescue" } - RBUI.DialogDescription { "RBUI helps you build accessible standard compliant web apps with ease" } - end - RBUI.DialogMiddle do - RBUI.AspectRatio(aspect_ratio: "16/9", class: "rounded-md overflow-hidden border") do |aspect| - aspect.img( - alt: "Placeholder", - loading: "lazy", - src: "https://avatars.githubusercontent.com/u/246692?v=4" - ) - end - end - RBUI.DialogFooter do - RBUI.Button(variant: :outline, data: {action: "click->rbui--dialog#dismiss"}) { "Cancel" } - RBUI.Button { "Save" } - end - end - end - end - - assert_match(/Open Dialog/, output) - end -end diff --git a/test/rbui/dropdown_menu_test.rb b/test/rbui/dropdown_menu_test.rb deleted file mode 100644 index 3eda7925..00000000 --- a/test/rbui/dropdown_menu_test.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::DropdownMenuTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.DropdownMenu do - RBUI.DropdownMenuTrigger(class: "w-full") do - RBUI.Button(variant: :outline) { "Open" } - end - RBUI.DropdownMenuContent do - RBUI.DropdownMenuLabel { "My Account" } - RBUI.DropdownMenuSeparator - RBUI.DropdownMenuItem(href: "#") { "Profile" } - RBUI.DropdownMenuItem(href: "#") { "Billing" } - RBUI.DropdownMenuItem(href: "#") { "Team" } - RBUI.DropdownMenuItem(href: "#") { "Subscription" } - end - end - end - - assert_match(/Open/, output) - end -end diff --git a/test/rbui/form_test.rb b/test/rbui/form_test.rb deleted file mode 100644 index 572f88e0..00000000 --- a/test/rbui/form_test.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::FormTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Form do - RBUI.FormField do - RBUI.FormFieldLabel { "Label" } - RBUI.Input(placeholder: "Joel Drapper", required: true, minlength: "3") { "Joel Drapper" } - RBUI.FormFieldHint() - RBUI.FormFieldError() - end - end - end - - assert_match(/Joel/, output) - end -end diff --git a/test/rbui/hover_card_test.rb b/test/rbui/hover_card_test.rb deleted file mode 100644 index 455bfc0d..00000000 --- a/test/rbui/hover_card_test.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::HoverCardTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.HoverCard do - RBUI.HoverCardTrigger do - RBUI.Button(variant: :link) { "@joeldrapper" } - end - RBUI.HoverCardContent do |card_content| - card_content.div(class: "flex justify-between space-x-4") do - RBUI.Avatar do - RBUI.AvatarImage(src: "https://avatars.githubusercontent.com/u/246692?v=4", alt: "joeldrapper") - RBUI.AvatarFallback { "JD" } - end - end - end - end - end - - assert_match(/joeldrapper/, output) - end -end diff --git a/test/rbui/pagination_test.rb b/test/rbui/pagination_test.rb deleted file mode 100644 index 68974e52..00000000 --- a/test/rbui/pagination_test.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::PaginationTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Pagination do - RBUI.PaginationContent do - RBUI.PaginationItem(href: "#") do |item| - item.plain "First" - end - RBUI.PaginationItem(href: "#") do |item| - item.plain "Prev" - end - - RBUI.PaginationEllipsis - - RBUI.PaginationItem(href: "#") { "4" } - RBUI.PaginationItem(href: "#", active: true) { "5" } - RBUI.PaginationItem(href: "#") { "6" } - - RBUI.PaginationEllipsis - - RBUI.PaginationItem(href: "#") do |item| - item.plain "Next" - end - RBUI.PaginationItem(href: "#") do |item| - item.plain "Last" - end - end - end - end - - assert_match(/First/, output) - end -end diff --git a/test/rbui/popover_test.rb b/test/rbui/popover_test.rb deleted file mode 100644 index 610a1c3a..00000000 --- a/test/rbui/popover_test.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::PopoverTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Popover do - RBUI.PopoverTrigger(class: "w-full") do - RBUI.Button(variant: :outline) { "Open Popover" } - end - RBUI.PopoverContent(class: "w-40") do - RBUI.Link(href: "#", variant: :ghost, class: "block w-full justify-start pl-2") do |link| - link.plain "Profile" - end - RBUI.Link(href: "#", variant: :ghost, class: "block w-full justify-start pl-2") do |link| - link.plain "Settings" - end - RBUI.Link(href: "#", variant: :ghost, class: "block w-full justify-start pl-2") do |link| - link.plain "Logout" - end - end - end - end - - assert_match(/Profile/, output) - end -end diff --git a/test/rbui/setup_test.rb b/test/rbui/setup_test.rb deleted file mode 100644 index 8e796121..00000000 --- a/test/rbui/setup_test.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::SetupTest < Minitest::Test - def setup - @original_namespace = RBUI.namespace - end - - def teardown - RBUI.namespace = @original_namespace - Object.send(:remove_const, :UI) if Object.const_defined?(:UI) - end - - def test_default_namespace - RBUI.setup {} - - assert_nil RBUI.namespace - assert_kind_of RBUI::Base, RBUI::Button.new - end - - def test_custom_namespace - RBUI.setup do |config| - config.namespace = "UI" - end - - assert_equal "UI", RBUI.namespace - assert_equal RBUI::Base, UI::Base - assert_kind_of RBUI::Base, UI::Button.new - end -end diff --git a/test/rbui/sheet_test.rb b/test/rbui/sheet_test.rb deleted file mode 100644 index 17a3e78e..00000000 --- a/test/rbui/sheet_test.rb +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::SheetTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Sheet do - RBUI.SheetTrigger do - RBUI.Button(variant: :outline) { "Open Sheet" } - end - - RBUI.SheetContent(class: "sm:max-w-sm") do - RBUI.SheetHeader do - RBUI.SheetTitle { "Edit profile" } - RBUI.SheetDescription { "Make changes to your profile here. Click save when you're done." } - end - RBUI.SheetMiddle do - RBUI.Input(placeholder: "Joel Drapper") { "Joel Drapper" } - RBUI.Input(placeholder: "joel@drapper.me") - - RBUI.SheetFooter do - RBUI.Button(variant: :outline, data: {action: "click->rbui--sheet-content#close"}) { "Cancel" } - RBUI.Button(type: "submit") { "Save" } - end - end - end - end - end - - assert_match(/Open Sheet/, output) - end -end diff --git a/test/rbui/table_test.rb b/test/rbui/table_test.rb deleted file mode 100644 index a9f9b7ae..00000000 --- a/test/rbui/table_test.rb +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::TableTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - invoices = [ - {identifier: "INV-0001", status: "Active", method: "Credit Card", amount: 100}, - {identifier: "INV-0002", status: "Active", method: "Bank Transfer", amount: 230}, - {identifier: "INV-0003", status: "Pending", method: "PayPal", amount: 350}, - {identifier: "INV-0004", status: "Inactive", method: "Credit Card", amount: 100} - ] - - output = phlex_context do - RBUI.Table do - RBUI.TableCaption { "Employees at Acme inc." } - RBUI.TableHeader do - RBUI.TableRow do - RBUI.TableHead { "Name" } - RBUI.TableHead { "Email" } - RBUI.TableHead { "Status" } - RBUI.TableHead(class: "text-right") { "Role" } - end - end - RBUI.TableBody do - invoices.each do |invoice| - RBUI.TableRow do - RBUI.TableCell(class: "font-medium") { invoice[:identifier] } - RBUI.TableCell { invoice[:status] } - RBUI.TableCell { invoice[:method] } - RBUI.TableCell(class: "text-right") { invoice[:amount] } - end - end - end - RBUI.TableFooter do - RBUI.TableRow do - RBUI.TableHead(class: "font-medium", colspan: 3) { "Total" } - RBUI.TableHead(class: "font-medium text-right") { invoices.sum { |invoice| invoice[:amount] } } - end - end - end - end - - assert_match(/Total/, output) - end -end diff --git a/test/rbui/tabs_test.rb b/test/rbui/tabs_test.rb deleted file mode 100644 index 4e6e4255..00000000 --- a/test/rbui/tabs_test.rb +++ /dev/null @@ -1,29 +0,0 @@ -# frozen_string_literal: true - -require "test_helper" - -class RBUI::TabsTest < Minitest::Test - include Phlex::Testing::ViewHelper - - def test_render_with_all_items - output = phlex_context do - RBUI.Tabs(default_value: "account", class: "w-96") do - RBUI.TabsList do - RBUI.TabsTrigger(value: "account") { "Account" } - RBUI.TabsTrigger(value: "password") { "Password" } - end - RBUI.TabsContent(value: "account") do - RBUI::Text(as: "p", size: "4") { "Account" } - RBUI::Text(size: "5", weight: "semibold") { "Are you sure absolutely sure?" } - RBUI::Text(size: "2", class: "text-muted-foreground") { "Update your account details." } - end - RBUI.TabsContent(value: "password") do - RBUI::Text(as: "p", size: "4") { "Password" } - RBUI::Text(size: "2", class: "text-muted-foreground") { "Change your password here. After saving, you'll be logged out." } - end - end - end - - assert_match(/Account/, output) - end -end diff --git a/test/rbui/accordion_test.rb b/test/ruby_ui/accordion_test.rb similarity index 64% rename from test/rbui/accordion_test.rb rename to test/ruby_ui/accordion_test.rb index 464caf61..df18fe7f 100644 --- a/test/rbui/accordion_test.rb +++ b/test/ruby_ui/accordion_test.rb @@ -2,15 +2,15 @@ require "test_helper" -class RBUI::AccordionTest < Minitest::Test +class RubyUI::AccordionTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_default_items output = phlex_context do - RBUI.Accordion do - RBUI.AccordionItem do - RBUI.AccordionDefaultTrigger { "Title" } - RBUI.AccordionDefaultContent { "Content" } + RubyUI.Accordion do + RubyUI.AccordionItem do + RubyUI.AccordionDefaultTrigger { "Title" } + RubyUI.AccordionDefaultContent { "Content" } end end end @@ -20,11 +20,11 @@ def test_render_with_default_items def test_render_with_all_items output = phlex_context do - RBUI.Accordion do - RBUI.AccordionItem do - RBUI.AccordionTrigger do |trigger| + RubyUI.Accordion do + RubyUI.AccordionItem do + RubyUI.AccordionTrigger do |trigger| trigger.div do |div| - RBUI.AccordionIcon do |icon| + RubyUI.AccordionIcon do |icon| icon.svg( xmlns: "http://www.w3.org/2000/svg", fill: "none", @@ -40,19 +40,19 @@ def test_render_with_all_items ) end end - div.p { "What is RBUI?" } + div.p { "What is RubyUI?" } end end - RBUI.AccordionContent do |content| - content.p { "RBUI is a UI component library for Ruby devs who want to build better, faster." } + RubyUI.AccordionContent do |content| + content.p { "RubyUI is a UI component library for Ruby devs who want to build better, faster." } end end - RBUI.AccordionItem do - RBUI.AccordionTrigger do |trigger| + RubyUI.AccordionItem do + RubyUI.AccordionTrigger do |trigger| trigger.div do |div| - RBUI.AccordionIcon do |icon| + RubyUI.AccordionIcon do |icon| icon.svg( xmlns: "http://www.w3.org/2000/svg", fill: "none", @@ -72,15 +72,15 @@ def test_render_with_all_items end end - RBUI.AccordionContent do |content| + RubyUI.AccordionContent do |content| content.p do - "Yes, RBUI is pure Ruby and works great with Rails. It's a Ruby gem that you can install into your Rails app." + "Yes, RubyUI is pure Ruby and works great with Rails. It's a Ruby gem that you can install into your Rails app." end end end end end - assert_match(/Yes, RBUI is pure Ruby and works great with Rails/, output) + assert_match(/Yes, RubyUI is pure Ruby and works great with Rails/, output) end end diff --git a/test/ruby_ui/alert_dialog_test.rb b/test/ruby_ui/alert_dialog_test.rb new file mode 100644 index 00000000..acb61f33 --- /dev/null +++ b/test/ruby_ui/alert_dialog_test.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::AlertDialogTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.AlertDialog do + RubyUI.AlertDialogTrigger do + RubyUI.Button { "Show dialog" } + end + RubyUI.AlertDialogContent do + RubyUI.AlertDialogHeader do + RubyUI.AlertDialogTitle { "Are you absolutely sure?" } + RubyUI.AlertDialogDescription { "This action cannot be undone. This will permanently delete your account and remove your data from our servers." } + end + RubyUI.AlertDialogFooter do + RubyUI.AlertDialogCancel { "Cancel" } + RubyUI.AlertDialogAction { "Continue" } + end + end + end + end + + assert_match(/Show dialog/, output) + end +end diff --git a/test/rbui/alert_test.rb b/test/ruby_ui/alert_test.rb similarity index 51% rename from test/rbui/alert_test.rb rename to test/ruby_ui/alert_test.rb index 4f317e21..7e407909 100644 --- a/test/rbui/alert_test.rb +++ b/test/ruby_ui/alert_test.rb @@ -2,14 +2,14 @@ require "test_helper" -class RBUI::AlertTest < Minitest::Test +class RubyUI::AlertTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Alert do - RBUI.AlertTitle { "Pro tip" } - RBUI.AlertDescription { "Simply, don't include an icon and your alert will look like this." } + RubyUI.Alert do + RubyUI.AlertTitle { "Pro tip" } + RubyUI.AlertDescription { "Simply, don't include an icon and your alert will look like this." } end end diff --git a/test/rbui/aspect_ratio_test.rb b/test/ruby_ui/aspect_ratio_test.rb similarity index 78% rename from test/rbui/aspect_ratio_test.rb rename to test/ruby_ui/aspect_ratio_test.rb index 9be3cfe1..5e63fe60 100644 --- a/test/rbui/aspect_ratio_test.rb +++ b/test/ruby_ui/aspect_ratio_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::AspectRatioTest < Minitest::Test +class RubyUI::AspectRatioTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.AspectRatio(aspect_ratio: "16/9") do |aspect| + RubyUI.AspectRatio(aspect_ratio: "16/9") do |aspect| aspect.img( alt: "Placeholder", loading: "lazy", diff --git a/test/rbui/avatar_test.rb b/test/ruby_ui/avatar_test.rb similarity index 51% rename from test/rbui/avatar_test.rb rename to test/ruby_ui/avatar_test.rb index 52fcd983..4be51538 100644 --- a/test/rbui/avatar_test.rb +++ b/test/ruby_ui/avatar_test.rb @@ -2,14 +2,14 @@ require "test_helper" -class RBUI::AvatarTest < Minitest::Test +class RubyUI::AvatarTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Avatar do - RBUI.AvatarImage(src: "https://avatars.githubusercontent.com/u/246692?v=4", alt: "joeldrapper") - RBUI.AvatarFallback { "JD" } + RubyUI.Avatar do + RubyUI.AvatarImage(src: "https://avatars.githubusercontent.com/u/246692?v=4", alt: "joeldrapper") + RubyUI.AvatarFallback { "JD" } end end diff --git a/test/rbui/badge_test.rb b/test/ruby_ui/badge_test.rb similarity index 74% rename from test/rbui/badge_test.rb rename to test/ruby_ui/badge_test.rb index 87973753..18de47b4 100644 --- a/test/rbui/badge_test.rb +++ b/test/ruby_ui/badge_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::BadgeTest < Minitest::Test +class RubyUI::BadgeTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Badge { "Badge" } + RubyUI.Badge { "Badge" } end assert_match(/Badge/, output) diff --git a/test/rbui/button_test.rb b/test/ruby_ui/button_test.rb similarity index 68% rename from test/rbui/button_test.rb rename to test/ruby_ui/button_test.rb index 305845c4..3e6a5f59 100644 --- a/test/rbui/button_test.rb +++ b/test/ruby_ui/button_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::ButtonTest < Minitest::Test +class RubyUI::ButtonTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Button(variant: :primary) { "Primary" } + RubyUI.Button(variant: :primary) { "Primary" } end assert_match(/Primary/, output) diff --git a/test/ruby_ui/calendar_test.rb b/test/ruby_ui/calendar_test.rb new file mode 100644 index 00000000..9b309b41 --- /dev/null +++ b/test/ruby_ui/calendar_test.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::CalendarTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Input(type: "string", placeholder: "Select a date", class: "rounded-md border shadow", id: "date", data_controller: "rbui--input") + RubyUI.Calendar(input_id: "#date", class: "rounded-md border shadow") + end + + assert_match(/Select a date/, output) + end +end diff --git a/test/ruby_ui/card_test.rb b/test/ruby_ui/card_test.rb new file mode 100644 index 00000000..1054d600 --- /dev/null +++ b/test/ruby_ui/card_test.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::CardTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Card(class: "w-96") do + RubyUI.CardHeader do + RubyUI.CardTitle { 'You might like "RubyUI"' } + RubyUI.CardDescription { "@joeldrapper" } + end + RubyUI.CardContent do + RubyUI.AspectRatio(aspect_ratio: "16/9", class: "rounded-md overflow-hidden border") do |aspect_ratio| + aspect_ratio.img( + alt: "Placeholder", + loading: "lazy", + src: "https://avatars.githubusercontent.com/u/246692?v=4" + ) + end + end + RubyUI.CardFooter(class: "flex justify-end gap-x-2") do + RubyUI.Button(variant: :outline) { "See more" } + RubyUI.Button(variant: :primary) { "Buy now" } + end + end + end + + assert_match(/You might like/, output) + end +end diff --git a/test/rbui/chart_test.rb b/test/ruby_ui/chart_test.rb similarity index 88% rename from test/rbui/chart_test.rb rename to test/ruby_ui/chart_test.rb index a7c884b3..2b0d2894 100644 --- a/test/rbui/chart_test.rb +++ b/test/ruby_ui/chart_test.rb @@ -2,7 +2,7 @@ require "test_helper" -class RBUI::ChartTest < Minitest::Test +class RubyUI::ChartTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items @@ -26,7 +26,7 @@ def test_render_with_all_items } } - RBUI.Chart(options: options) + RubyUI.Chart(options: options) end assert_match(/Phlex/, output) diff --git a/test/rbui/checkbox_test.rb b/test/ruby_ui/checkbox_test.rb similarity index 72% rename from test/rbui/checkbox_test.rb rename to test/ruby_ui/checkbox_test.rb index cb57d264..03daca3f 100644 --- a/test/rbui/checkbox_test.rb +++ b/test/ruby_ui/checkbox_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::CheckboxTest < Minitest::Test +class RubyUI::CheckboxTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Checkbox(id: "terms") + RubyUI.Checkbox(id: "terms") end assert_match(/terms/, output) diff --git a/test/rbui/clipboard_test.rb b/test/ruby_ui/clipboard_test.rb similarity index 65% rename from test/rbui/clipboard_test.rb rename to test/ruby_ui/clipboard_test.rb index 20455f4e..02bd5017 100644 --- a/test/rbui/clipboard_test.rb +++ b/test/ruby_ui/clipboard_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::ClipboardTest < Minitest::Test +class RubyUI::ClipboardTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Clipboard(success: "Copied!", error: "Copy Failed!") + RubyUI.Clipboard(success: "Copied!", error: "Copy Failed!") end assert_match(/Copied/, output) diff --git a/test/rbui/codeblock_test.rb b/test/ruby_ui/codeblock_test.rb similarity index 77% rename from test/rbui/codeblock_test.rb rename to test/ruby_ui/codeblock_test.rb index 93f9db08..7a2fddf7 100644 --- a/test/rbui/codeblock_test.rb +++ b/test/ruby_ui/codeblock_test.rb @@ -2,7 +2,7 @@ require "test_helper" -class RBUI::CodeblockTest < Minitest::Test +class RubyUI::CodeblockTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items @@ -13,7 +13,7 @@ def hello_world CODE output = phlex_context do - RBUI.Codeblock(code, syntax: :ruby) + RubyUI.Codeblock(code, syntax: :ruby) end assert_match(/Hello/, output) diff --git a/test/rbui/collapsible_test.rb b/test/ruby_ui/collapsible_test.rb similarity index 71% rename from test/rbui/collapsible_test.rb rename to test/ruby_ui/collapsible_test.rb index 2a2b27f2..98f9b4c8 100644 --- a/test/rbui/collapsible_test.rb +++ b/test/ruby_ui/collapsible_test.rb @@ -2,19 +2,19 @@ require "test_helper" -class RBUI::CollapsibleTest < Minitest::Test +class RubyUI::CollapsibleTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Collapsible(open: true) do - RBUI.CollapsibleTrigger do - RBUI.Button(variant: :ghost, icon: true) do |button| + RubyUI.Collapsible(open: true) do + RubyUI.CollapsibleTrigger do + RubyUI.Button(variant: :ghost, icon: true) do |button| button.span(class: "sr-only") { "Toggle" } end end - RBUI.CollapsibleContent do |content| + RubyUI.CollapsibleContent do |content| content.div(class: "rounded-md border px-4 py-2 font-mono text-sm shadow-sm") do "phlex-ruby/phlex-rails" end diff --git a/test/ruby_ui/combobox_test.rb b/test/ruby_ui/combobox_test.rb new file mode 100644 index 00000000..fc108a85 --- /dev/null +++ b/test/ruby_ui/combobox_test.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::ComboboxTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Combobox do + RubyUI.ComboboxInput() + RubyUI.ComboboxTrigger do + RubyUI.ComboboxValue(placeholder: "Select event...") + end + RubyUI.ComboboxContent do + RubyUI.ComboboxSearchInput(placeholder: "Search event...") + RubyUI.ComboboxList do + RubyUI.ComboboxEmpty { "No results found." } + RubyUI.ComboboxGroup(heading: "Suggestions") do + RubyUI.ComboboxItem(value: "railsworld") do |item| + item.span { "Rails World" } + end + RubyUI.ComboboxItem(value: "tropicalrb") do |item| + item.span { "Tropical.rb" } + end + RubyUI.ComboboxItem(value: "friendly.rb") do |item| + item.span { "Friendly.rb" } + end + end + + RubyUI.ComboboxSeparator() + + RubyUI.ComboboxGroup(heading: "Others") do + RubyUI.ComboboxItem(value: "railsconf") do |item| + item.span { "RailsConf" } + end + RubyUI.ComboboxItem(value: "euruko") do |item| + item.span { "Euruko" } + end + RubyUI.ComboboxItem(value: "rubykaigi") do |item| + item.span { "RubyKaigi" } + end + end + end + end + end + end + + assert_match(/Tropical.rb/, output) + end +end diff --git a/test/rbui/command_test.rb b/test/ruby_ui/command_test.rb similarity index 62% rename from test/rbui/command_test.rb rename to test/ruby_ui/command_test.rb index 9b92e267..95524407 100644 --- a/test/rbui/command_test.rb +++ b/test/ruby_ui/command_test.rb @@ -2,7 +2,7 @@ require "test_helper" -class RBUI::CommandTest < Minitest::Test +class RubyUI::CommandTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items @@ -22,35 +22,35 @@ def test_render_with_all_items ] output = phlex_context do - RBUI.CommandDialog do - RBUI.CommandDialogTrigger do - RBUI.Button(variant: "outline", class: "w-56 pr-2 pl-3 justify-between") do |button| + RubyUI.CommandDialog do + RubyUI.CommandDialogTrigger do + RubyUI.Button(variant: "outline", class: "w-56 pr-2 pl-3 justify-between") do |button| button.div(class: "flex items-center space-x-1") do |div| div.span(class: "text-muted-foreground font-normal") do |span| span.plain "Search" end end - RBUI.ShortcutKey do |shortcut_key| + RubyUI.ShortcutKey do |shortcut_key| shortcut_key.span(class: "text-xs") { "⌘" } shortcut_key.plain "K" end end end - RBUI.CommandDialogContent do - RBUI.Command do - RBUI.CommandInput(placeholder: "Type a command or search...") - RBUI.CommandEmpty { "No results found." } - RBUI.CommandList do - RBUI.CommandGroup(title: "Components") do + RubyUI.CommandDialogContent do + RubyUI.Command do + RubyUI.CommandInput(placeholder: "Type a command or search...") + RubyUI.CommandEmpty { "No results found." } + RubyUI.CommandList do + RubyUI.CommandGroup(title: "Components") do components_list.each do |component| - RBUI.CommandItem(value: component[:name], href: component[:path]) do |item| + RubyUI.CommandItem(value: component[:name], href: component[:path]) do |item| item.plain component[:name] end end end - RBUI.CommandGroup(title: "Settings") do + RubyUI.CommandGroup(title: "Settings") do settings_list.each do |setting| - RBUI.CommandItem(value: setting[:name], href: setting[:path]) do |item| + RubyUI.CommandItem(value: setting[:name], href: setting[:path]) do |item| item.plain setting[:name] end end diff --git a/test/ruby_ui/context_menu_test.rb b/test/ruby_ui/context_menu_test.rb new file mode 100644 index 00000000..64bd4bf8 --- /dev/null +++ b/test/ruby_ui/context_menu_test.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::ContextMenuTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.ContextMenu do + RubyUI.ContextMenuTrigger(class: "flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm") { "Right click here" } + RubyUI.ContextMenuContent(class: "w-64") do + RubyUI.ContextMenuItem(href: "#", shortcut: "⌘[") { "Back" } + RubyUI.ContextMenuItem(href: "#", shortcut: "⌘]", disabled: true) { "Forward" } + RubyUI.ContextMenuItem(href: "#", shortcut: "⌘R") { "Reload" } + RubyUI.ContextMenuSeparator + RubyUI.ContextMenuItem(href: "#", shortcut: "⌘⇧B", checked: true) { "Show Bookmarks Bar" } + RubyUI.ContextMenuItem(href: "#") { "Show Full URLs" } + RubyUI.ContextMenuSeparator + RubyUI.ContextMenuLabel(inset: true) { "More Tools" } + RubyUI.ContextMenuSeparator + RubyUI.ContextMenuItem(href: "#") { "Developer Tools" } + RubyUI.ContextMenuItem(href: "#") { "Task Manager" } + RubyUI.ContextMenuItem(href: "#") { "Extensions" } + end + end + end + + assert_match(/Right click here/, output) + end +end diff --git a/test/ruby_ui/dialog_test.rb b/test/ruby_ui/dialog_test.rb new file mode 100644 index 00000000..1103daaa --- /dev/null +++ b/test/ruby_ui/dialog_test.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::DialogTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Dialog do + RubyUI.DialogTrigger do + RubyUI.Button { "Open Dialog" } + end + RubyUI.DialogContent do + RubyUI.DialogHeader do + RubyUI.DialogTitle { "RubyUI to the rescue" } + RubyUI.DialogDescription { "RubyUI helps you build accessible standard compliant web apps with ease" } + end + RubyUI.DialogMiddle do + RubyUI.AspectRatio(aspect_ratio: "16/9", class: "rounded-md overflow-hidden border") do |aspect| + aspect.img( + alt: "Placeholder", + loading: "lazy", + src: "https://avatars.githubusercontent.com/u/246692?v=4" + ) + end + end + RubyUI.DialogFooter do + RubyUI.Button(variant: :outline, data: {action: "click->rbui--dialog#dismiss"}) { "Cancel" } + RubyUI.Button { "Save" } + end + end + end + end + + assert_match(/Open Dialog/, output) + end +end diff --git a/test/ruby_ui/dropdown_menu_test.rb b/test/ruby_ui/dropdown_menu_test.rb new file mode 100644 index 00000000..4e0df149 --- /dev/null +++ b/test/ruby_ui/dropdown_menu_test.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::DropdownMenuTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.DropdownMenu do + RubyUI.DropdownMenuTrigger(class: "w-full") do + RubyUI.Button(variant: :outline) { "Open" } + end + RubyUI.DropdownMenuContent do + RubyUI.DropdownMenuLabel { "My Account" } + RubyUI.DropdownMenuSeparator + RubyUI.DropdownMenuItem(href: "#") { "Profile" } + RubyUI.DropdownMenuItem(href: "#") { "Billing" } + RubyUI.DropdownMenuItem(href: "#") { "Team" } + RubyUI.DropdownMenuItem(href: "#") { "Subscription" } + end + end + end + + assert_match(/Open/, output) + end +end diff --git a/test/ruby_ui/form_test.rb b/test/ruby_ui/form_test.rb new file mode 100644 index 00000000..33871e71 --- /dev/null +++ b/test/ruby_ui/form_test.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::FormTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Form do + RubyUI.FormField do + RubyUI.FormFieldLabel { "Label" } + RubyUI.Input(placeholder: "Joel Drapper", required: true, minlength: "3") { "Joel Drapper" } + RubyUI.FormFieldHint() + RubyUI.FormFieldError() + end + end + end + + assert_match(/Joel/, output) + end +end diff --git a/test/ruby_ui/hover_card_test.rb b/test/ruby_ui/hover_card_test.rb new file mode 100644 index 00000000..16bc1f14 --- /dev/null +++ b/test/ruby_ui/hover_card_test.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::HoverCardTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.HoverCard do + RubyUI.HoverCardTrigger do + RubyUI.Button(variant: :link) { "@joeldrapper" } + end + RubyUI.HoverCardContent do |card_content| + card_content.div(class: "flex justify-between space-x-4") do + RubyUI.Avatar do + RubyUI.AvatarImage(src: "https://avatars.githubusercontent.com/u/246692?v=4", alt: "joeldrapper") + RubyUI.AvatarFallback { "JD" } + end + end + end + end + end + + assert_match(/joeldrapper/, output) + end +end diff --git a/test/rbui/inline_code_test.rb b/test/ruby_ui/inline_code_test.rb similarity index 79% rename from test/rbui/inline_code_test.rb rename to test/ruby_ui/inline_code_test.rb index fdb50d3c..501c3330 100644 --- a/test/rbui/inline_code_test.rb +++ b/test/ruby_ui/inline_code_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::InlineCodeTest < Minitest::Test +class RubyUI::InlineCodeTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_inline_code output = phlex_context do - RBUI::InlineCode() { "This is an inline code block" } + RubyUI::InlineCode() { "This is an inline code block" } end assert_match("This is an inline code block", output) diff --git a/test/rbui/inline_link_test.rb b/test/ruby_ui/inline_link_test.rb similarity index 79% rename from test/rbui/inline_link_test.rb rename to test/ruby_ui/inline_link_test.rb index 2340a391..6f646fda 100644 --- a/test/rbui/inline_link_test.rb +++ b/test/ruby_ui/inline_link_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::InlineLinkTest < Minitest::Test +class RubyUI::InlineLinkTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_inline_link output = phlex_context do - RBUI::InlineLink(href: "#") { "Link" } + RubyUI::InlineLink(href: "#") { "Link" } end assert_match(/Link/, output) diff --git a/test/rbui/input_test.rb b/test/ruby_ui/input_test.rb similarity index 67% rename from test/rbui/input_test.rb rename to test/ruby_ui/input_test.rb index 3380e9b7..7f6d48e8 100644 --- a/test/rbui/input_test.rb +++ b/test/ruby_ui/input_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::InputTest < Minitest::Test +class RubyUI::InputTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Input(type: "email", placeholder: "Email") + RubyUI.Input(type: "email", placeholder: "Email") end assert_match(/Email/, output) @@ -15,7 +15,7 @@ def test_render_with_all_items def test_render_with_value output = phlex_context do - RBUI.Input(type: "email", value: "user@email.com") + RubyUI.Input(type: "email", value: "user@email.com") end assert_match(/user@email.com/, output) diff --git a/test/rbui/link_test.rb b/test/ruby_ui/link_test.rb similarity index 72% rename from test/rbui/link_test.rb rename to test/ruby_ui/link_test.rb index 53faa885..85b2e6aa 100644 --- a/test/rbui/link_test.rb +++ b/test/ruby_ui/link_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::LinkTest < Minitest::Test +class RubyUI::LinkTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Link(href: "#") { "Link" } + RubyUI.Link(href: "#") { "Link" } end assert_match(/Link/, output) diff --git a/test/ruby_ui/pagination_test.rb b/test/ruby_ui/pagination_test.rb new file mode 100644 index 00000000..036c2c95 --- /dev/null +++ b/test/ruby_ui/pagination_test.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::PaginationTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Pagination do + RubyUI.PaginationContent do + RubyUI.PaginationItem(href: "#") do |item| + item.plain "First" + end + RubyUI.PaginationItem(href: "#") do |item| + item.plain "Prev" + end + + RubyUI.PaginationEllipsis + + RubyUI.PaginationItem(href: "#") { "4" } + RubyUI.PaginationItem(href: "#", active: true) { "5" } + RubyUI.PaginationItem(href: "#") { "6" } + + RubyUI.PaginationEllipsis + + RubyUI.PaginationItem(href: "#") do |item| + item.plain "Next" + end + RubyUI.PaginationItem(href: "#") do |item| + item.plain "Last" + end + end + end + end + + assert_match(/First/, output) + end +end diff --git a/test/ruby_ui/popover_test.rb b/test/ruby_ui/popover_test.rb new file mode 100644 index 00000000..4baccc9e --- /dev/null +++ b/test/ruby_ui/popover_test.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::PopoverTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Popover do + RubyUI.PopoverTrigger(class: "w-full") do + RubyUI.Button(variant: :outline) { "Open Popover" } + end + RubyUI.PopoverContent(class: "w-40") do + RubyUI.Link(href: "#", variant: :ghost, class: "block w-full justify-start pl-2") do |link| + link.plain "Profile" + end + RubyUI.Link(href: "#", variant: :ghost, class: "block w-full justify-start pl-2") do |link| + link.plain "Settings" + end + RubyUI.Link(href: "#", variant: :ghost, class: "block w-full justify-start pl-2") do |link| + link.plain "Logout" + end + end + end + end + + assert_match(/Profile/, output) + end +end diff --git a/test/rbui/select_test.rb b/test/ruby_ui/select_test.rb similarity index 56% rename from test/rbui/select_test.rb rename to test/ruby_ui/select_test.rb index 6ebbf5a7..14e223ab 100644 --- a/test/rbui/select_test.rb +++ b/test/ruby_ui/select_test.rb @@ -2,7 +2,7 @@ require "test_helper" -class RBUI::SelectTest < Minitest::Test +class RubyUI::SelectTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items @@ -13,15 +13,15 @@ def test_render_with_all_items ] output = phlex_context do - RBUI.Select do - RBUI.SelectInput(name: "NAME") - RBUI.SelectTrigger do - RBUI.SelectValue(placeholder: "Placeholder") + RubyUI.Select do + RubyUI.SelectInput(name: "NAME") + RubyUI.SelectTrigger do + RubyUI.SelectValue(placeholder: "Placeholder") end - RBUI.SelectContent(outlet_id: "1") do - RBUI.SelectGroup do + RubyUI.SelectContent(outlet_id: "1") do + RubyUI.SelectGroup do people.each do |person| - RBUI.SelectItem(value: person[1]) { person[0] } + RubyUI.SelectItem(value: person[1]) { person[0] } end end end diff --git a/test/ruby_ui/setup_test.rb b/test/ruby_ui/setup_test.rb new file mode 100644 index 00000000..76f0a59d --- /dev/null +++ b/test/ruby_ui/setup_test.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::SetupTest < Minitest::Test + def setup + @original_namespace = RubyUI.namespace + end + + def teardown + RubyUI.namespace = @original_namespace + Object.send(:remove_const, :UI) if Object.const_defined?(:UI) + end + + def test_default_namespace + RubyUI.setup {} + + assert_nil RubyUI.namespace + assert_kind_of RubyUI::Base, RubyUI::Button.new + end + + def test_custom_namespace + RubyUI.setup do |config| + config.namespace = "UI" + end + + assert_equal "UI", RubyUI.namespace + assert_equal RubyUI::Base, UI::Base + assert_kind_of RubyUI::Base, UI::Button.new + end +end diff --git a/test/ruby_ui/sheet_test.rb b/test/ruby_ui/sheet_test.rb new file mode 100644 index 00000000..8f9a965a --- /dev/null +++ b/test/ruby_ui/sheet_test.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::SheetTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Sheet do + RubyUI.SheetTrigger do + RubyUI.Button(variant: :outline) { "Open Sheet" } + end + + RubyUI.SheetContent(class: "sm:max-w-sm") do + RubyUI.SheetHeader do + RubyUI.SheetTitle { "Edit profile" } + RubyUI.SheetDescription { "Make changes to your profile here. Click save when you're done." } + end + RubyUI.SheetMiddle do + RubyUI.Input(placeholder: "Joel Drapper") { "Joel Drapper" } + RubyUI.Input(placeholder: "joel@drapper.me") + + RubyUI.SheetFooter do + RubyUI.Button(variant: :outline, data: {action: "click->rbui--sheet-content#close"}) { "Cancel" } + RubyUI.Button(type: "submit") { "Save" } + end + end + end + end + end + + assert_match(/Open Sheet/, output) + end +end diff --git a/test/rbui/shortcut_key_test.rb b/test/ruby_ui/shortcut_key_test.rb similarity index 77% rename from test/rbui/shortcut_key_test.rb rename to test/ruby_ui/shortcut_key_test.rb index ffbafbf9..55b12262 100644 --- a/test/rbui/shortcut_key_test.rb +++ b/test/ruby_ui/shortcut_key_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::ShortcutKeyTest < Minitest::Test +class RubyUI::ShortcutKeyTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.ShortcutKey do |shortcut| + RubyUI.ShortcutKey do |shortcut| shortcut.span(class: "text-xs") { "⌘" } shortcut.plain "K" end diff --git a/test/ruby_ui/table_test.rb b/test/ruby_ui/table_test.rb new file mode 100644 index 00000000..3983f28d --- /dev/null +++ b/test/ruby_ui/table_test.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::TableTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + invoices = [ + {identifier: "INV-0001", status: "Active", method: "Credit Card", amount: 100}, + {identifier: "INV-0002", status: "Active", method: "Bank Transfer", amount: 230}, + {identifier: "INV-0003", status: "Pending", method: "PayPal", amount: 350}, + {identifier: "INV-0004", status: "Inactive", method: "Credit Card", amount: 100} + ] + + output = phlex_context do + RubyUI.Table do + RubyUI.TableCaption { "Employees at Acme inc." } + RubyUI.TableHeader do + RubyUI.TableRow do + RubyUI.TableHead { "Name" } + RubyUI.TableHead { "Email" } + RubyUI.TableHead { "Status" } + RubyUI.TableHead(class: "text-right") { "Role" } + end + end + RubyUI.TableBody do + invoices.each do |invoice| + RubyUI.TableRow do + RubyUI.TableCell(class: "font-medium") { invoice[:identifier] } + RubyUI.TableCell { invoice[:status] } + RubyUI.TableCell { invoice[:method] } + RubyUI.TableCell(class: "text-right") { invoice[:amount] } + end + end + end + RubyUI.TableFooter do + RubyUI.TableRow do + RubyUI.TableHead(class: "font-medium", colspan: 3) { "Total" } + RubyUI.TableHead(class: "font-medium text-right") { invoices.sum { |invoice| invoice[:amount] } } + end + end + end + end + + assert_match(/Total/, output) + end +end diff --git a/test/ruby_ui/tabs_test.rb b/test/ruby_ui/tabs_test.rb new file mode 100644 index 00000000..374cccc1 --- /dev/null +++ b/test/ruby_ui/tabs_test.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require "test_helper" + +class RubyUI::TabsTest < Minitest::Test + include Phlex::Testing::ViewHelper + + def test_render_with_all_items + output = phlex_context do + RubyUI.Tabs(default_value: "account", class: "w-96") do + RubyUI.TabsList do + RubyUI.TabsTrigger(value: "account") { "Account" } + RubyUI.TabsTrigger(value: "password") { "Password" } + end + RubyUI.TabsContent(value: "account") do + RubyUI::Text(as: "p", size: "4") { "Account" } + RubyUI::Text(size: "5", weight: "semibold") { "Are you sure absolutely sure?" } + RubyUI::Text(size: "2", class: "text-muted-foreground") { "Update your account details." } + end + RubyUI.TabsContent(value: "password") do + RubyUI::Text(as: "p", size: "4") { "Password" } + RubyUI::Text(size: "2", class: "text-muted-foreground") { "Change your password here. After saving, you'll be logged out." } + end + end + end + + assert_match(/Account/, output) + end +end diff --git a/test/rbui/text_test.rb b/test/ruby_ui/text_test.rb similarity index 76% rename from test/rbui/text_test.rb rename to test/ruby_ui/text_test.rb index 03b0fd44..dba4f73d 100644 --- a/test/rbui/text_test.rb +++ b/test/ruby_ui/text_test.rb @@ -2,13 +2,13 @@ require "test_helper" -class RBUI::TypographyTest < Minitest::Test +class RubyUI::TypographyTest < Minitest::Test include Phlex::Testing::ViewHelper def test_heading_with_levels (1..4).each do |level| output = phlex_context do - RBUI::Heading(level: level.to_s) { "This is an H#{level} title" } + RubyUI::Heading(level: level.to_s) { "This is an H#{level} title" } end assert_match("This is an H#{level} title", output) @@ -18,7 +18,7 @@ def test_heading_with_levels def test_heading_with_custom_size output = phlex_context do - RBUI::Heading(as: "h2", size: "7") { "Custom Heading" } + RubyUI::Heading(as: "h2", size: "7") { "Custom Heading" } end assert_match("Custom Heading", output) @@ -29,7 +29,7 @@ def test_heading_with_custom_size def test_text_with_sizes (1..9).each do |size| output = phlex_context do - RBUI::Text(size: size.to_s) { "Size #{size} text" } + RubyUI::Text(size: size.to_s) { "Size #{size} text" } end assert_match("Size #{size} text", output) @@ -48,7 +48,7 @@ def test_text_with_sizes def test_text_with_weights %w[light regular medium bold].each do |weight| output = phlex_context do - RBUI::Text(weight: weight) { "#{weight.capitalize} text" } + RubyUI::Text(weight: weight) { "#{weight.capitalize} text" } end assert_match("#{weight.capitalize} text", output) @@ -59,7 +59,7 @@ def test_text_with_weights def test_text_as_different_elements %w[p span div label].each do |element| output = phlex_context do - RBUI::Text(as: element) { element.capitalize.to_s } + RubyUI::Text(as: element) { element.capitalize.to_s } end assert_match(element.capitalize.to_s, output) @@ -69,7 +69,7 @@ def test_text_as_different_elements def test_lead_text output = phlex_context do - RBUI::Text(as: "p", size: "5", weight: "medium") { "A modal dialog that interrupts the user." } + RubyUI::Text(as: "p", size: "5", weight: "medium") { "A modal dialog that interrupts the user." } end assert_match("A modal dialog that interrupts the user.", output) @@ -79,7 +79,7 @@ def test_lead_text def test_large_text output = phlex_context do - RBUI::Text(size: "5", weight: "semibold") { "Are you sure absolutely sure?" } + RubyUI::Text(size: "5", weight: "semibold") { "Are you sure absolutely sure?" } end assert_match("Are you sure absolutely sure?", output) @@ -89,7 +89,7 @@ def test_large_text def test_small_text output = phlex_context do - RBUI::Text(size: "2", weight: "medium") { "Email address" } + RubyUI::Text(size: "2", weight: "medium") { "Email address" } end assert_match("Email address", output) @@ -99,7 +99,7 @@ def test_small_text def test_muted_text output = phlex_context do - RBUI::Text(size: "2", class: "text-muted-foreground") { "Enter your email address." } + RubyUI::Text(size: "2", class: "text-muted-foreground") { "Enter your email address." } end assert_match("Enter your email address.", output) diff --git a/test/rbui/textarea_test.rb b/test/ruby_ui/textarea_test.rb similarity index 70% rename from test/rbui/textarea_test.rb rename to test/ruby_ui/textarea_test.rb index 9174e70a..5513ff22 100644 --- a/test/rbui/textarea_test.rb +++ b/test/ruby_ui/textarea_test.rb @@ -2,12 +2,12 @@ require "test_helper" -class RBUI::TextareaTest < Minitest::Test +class RubyUI::TextareaTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Textarea(rows: 4, placeholder: "Comment") + RubyUI.Textarea(rows: 4, placeholder: "Comment") end assert_match(/Comment/, output) @@ -15,7 +15,7 @@ def test_render_with_all_items def test_render_with_value output = phlex_context do - RBUI.Textarea { "Value" } + RubyUI.Textarea { "Value" } end assert_match(/Value/, output) diff --git a/test/rbui/theme_toggle_test.rb b/test/ruby_ui/theme_toggle_test.rb similarity index 60% rename from test/rbui/theme_toggle_test.rb rename to test/ruby_ui/theme_toggle_test.rb index 31e06e00..d514aa27 100644 --- a/test/rbui/theme_toggle_test.rb +++ b/test/ruby_ui/theme_toggle_test.rb @@ -2,18 +2,18 @@ require "test_helper" -class RBUI::ThemeToggleTest < Minitest::Test +class RubyUI::ThemeToggleTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.ThemeToggle do |toggle| + RubyUI.ThemeToggle do |toggle| toggle.light_mode do - RBUI.Button(variant: :primary) { "Light" } + RubyUI.Button(variant: :primary) { "Light" } end toggle.dark_mode do - RBUI.Button(variant: :primary) { "Dark" } + RubyUI.Button(variant: :primary) { "Dark" } end end end diff --git a/test/rbui/tooltip_test.rb b/test/ruby_ui/tooltip_test.rb similarity index 50% rename from test/rbui/tooltip_test.rb rename to test/ruby_ui/tooltip_test.rb index 6beeac4e..eca36ebf 100644 --- a/test/rbui/tooltip_test.rb +++ b/test/ruby_ui/tooltip_test.rb @@ -2,17 +2,17 @@ require "test_helper" -class RBUI::TooltipTest < Minitest::Test +class RubyUI::TooltipTest < Minitest::Test include Phlex::Testing::ViewHelper def test_render_with_all_items output = phlex_context do - RBUI.Tooltip do - RBUI.TooltipTrigger do - RBUI.Button(variant: :outline, icon: true) { "?" } + RubyUI.Tooltip do + RubyUI.TooltipTrigger do + RubyUI.Button(variant: :outline, icon: true) { "?" } end - RBUI.TooltipContent do - RBUI::Text(as: "p") { "Add to library" } + RubyUI.TooltipContent do + RubyUI::Text(as: "p") { "Add to library" } end end end From b774b28a0a5e7f07b6e107c4da2da711ca8a2a45 Mon Sep 17 00:00:00 2001 From: Seth Horsley Date: Tue, 5 Nov 2024 02:11:19 +0100 Subject: [PATCH 2/4] rbui -> ruby_ui --- README.md | 8 +- bin/console | 2 +- .../{rbui => ruby_ui}/base_generator.rb | 2 +- .../{rbui => ruby_ui}/component_generator.rb | 30 ++--- .../install/install_generator.rb | 28 ++--- .../{rbui => ruby_ui}/install/templates/.keep | 0 .../templates/application.tailwind.css.tt | 4 +- .../templates/base_store_initializer.rb.tt | 0 .../install/templates/index.js.tt | 4 +- .../install/templates/index_view.rb.tt | 0 .../install/templates/tailwind.config.js.tt | 14 +-- lib/rbui.rb | 57 ---------- lib/ruby_ui.rb | 58 +++++++++- lib/ruby_ui/accordion/accordion_content.rb | 2 +- lib/ruby_ui/accordion/accordion_controller.js | 60 ++++++---- .../accordion/accordion_default_trigger.rb | 2 +- lib/ruby_ui/accordion/accordion_icon.rb | 2 +- lib/ruby_ui/accordion/accordion_item.rb | 6 +- lib/ruby_ui/accordion/accordion_trigger.rb | 2 +- lib/ruby_ui/alert_dialog/alert_dialog.rb | 4 +- .../alert_dialog/alert_dialog_cancel.rb | 2 +- .../alert_dialog/alert_dialog_content.rb | 2 +- .../alert_dialog/alert_dialog_controller.js | 2 +- .../alert_dialog/alert_dialog_trigger.rb | 2 +- lib/ruby_ui/calendar/calendar.rb | 8 +- lib/ruby_ui/calendar/calendar_body.rb | 2 +- lib/ruby_ui/calendar/calendar_controller.js | 104 +++++++++++------- lib/ruby_ui/calendar/calendar_days.rb | 10 +- lib/ruby_ui/calendar/calendar_next.rb | 2 +- lib/ruby_ui/calendar/calendar_prev.rb | 2 +- lib/ruby_ui/calendar/calendar_title.rb | 2 +- lib/ruby_ui/calendar/calendar_weekdays.rb | 2 +- lib/ruby_ui/chart/chart.rb | 4 +- lib/ruby_ui/checkbox/checkbox.rb | 6 +- lib/ruby_ui/checkbox/checkbox_group.rb | 2 +- lib/ruby_ui/clipboard/clipboard.rb | 10 +- lib/ruby_ui/clipboard/clipboard_popover.rb | 2 +- lib/ruby_ui/clipboard/clipboard_source.rb | 2 +- lib/ruby_ui/clipboard/clipboard_trigger.rb | 4 +- lib/ruby_ui/collapsible/collapsible.rb | 4 +- .../collapsible/collapsible_content.rb | 2 +- .../collapsible/collapsible_trigger.rb | 2 +- lib/ruby_ui/combobox/combobox.rb | 10 +- lib/ruby_ui/combobox/combobox_content.rb | 8 +- .../combobox/combobox_content_controller.js | 9 +- lib/ruby_ui/combobox/combobox_controller.js | 52 ++++++--- lib/ruby_ui/combobox/combobox_empty.rb | 2 +- lib/ruby_ui/combobox/combobox_group.rb | 2 +- lib/ruby_ui/combobox/combobox_input.rb | 6 +- lib/ruby_ui/combobox/combobox_item.rb | 8 +- lib/ruby_ui/combobox/combobox_list.rb | 2 +- lib/ruby_ui/combobox/combobox_search_input.rb | 4 +- lib/ruby_ui/combobox/combobox_trigger.rb | 4 +- lib/ruby_ui/combobox/combobox_value.rb | 2 +- lib/ruby_ui/command/command_controller.js | 57 ++++++---- lib/ruby_ui/command/command_dialog.rb | 2 +- lib/ruby_ui/command/command_dialog_content.rb | 6 +- lib/ruby_ui/command/command_dialog_trigger.rb | 4 +- lib/ruby_ui/command/command_empty.rb | 2 +- lib/ruby_ui/command/command_group.rb | 2 +- lib/ruby_ui/command/command_input.rb | 4 +- lib/ruby_ui/command/command_item.rb | 2 +- lib/ruby_ui/context_menu/context_menu.rb | 2 +- .../context_menu/context_menu_content.rb | 2 +- lib/ruby_ui/context_menu/context_menu_item.rb | 4 +- .../context_menu/context_menu_trigger.rb | 4 +- lib/ruby_ui/dialog/dialog.rb | 4 +- lib/ruby_ui/dialog/dialog_content.rb | 8 +- lib/ruby_ui/dialog/dialog_trigger.rb | 2 +- lib/ruby_ui/dropdown_menu/dropdown_menu.rb | 6 +- .../dropdown_menu/dropdown_menu_content.rb | 2 +- .../dropdown_menu/dropdown_menu_item.rb | 4 +- .../dropdown_menu/dropdown_menu_trigger.rb | 2 +- lib/ruby_ui/form/form_field.rb | 2 +- lib/ruby_ui/form/form_field_error.rb | 2 +- lib/ruby_ui/hover_card/hover_card.rb | 4 +- lib/ruby_ui/hover_card/hover_card_content.rb | 2 +- lib/ruby_ui/hover_card/hover_card_trigger.rb | 2 +- lib/ruby_ui/index.js | 50 ++++----- lib/ruby_ui/input/input.rb | 4 +- lib/ruby_ui/popover/popover.rb | 6 +- lib/ruby_ui/popover/popover_content.rb | 2 +- lib/ruby_ui/popover/popover_trigger.rb | 2 +- lib/ruby_ui/radio_button/radio_button.rb | 4 +- lib/ruby_ui/railtie.rb | 14 +-- lib/ruby_ui/select/select.rb | 8 +- lib/ruby_ui/select/select_content.rb | 4 +- lib/ruby_ui/select/select_controller.js | 38 +++++-- lib/ruby_ui/select/select_input.rb | 6 +- lib/ruby_ui/select/select_item.rb | 6 +- lib/ruby_ui/select/select_trigger.rb | 4 +- lib/ruby_ui/select/select_value.rb | 2 +- lib/ruby_ui/sheet/sheet.rb | 2 +- lib/ruby_ui/sheet/sheet_content.rb | 8 +- lib/ruby_ui/sheet/sheet_trigger.rb | 2 +- lib/ruby_ui/tabs/tabs.rb | 4 +- lib/ruby_ui/tabs/tabs_content.rb | 2 +- lib/ruby_ui/tabs/tabs_controller.js | 35 +++--- lib/ruby_ui/tabs/tabs_trigger.rb | 4 +- lib/ruby_ui/textarea/textarea.rb | 4 +- lib/ruby_ui/theme_toggle/theme_toggle.rb | 6 +- lib/ruby_ui/tooltip/tooltip.rb | 4 +- lib/ruby_ui/tooltip/tooltip_content.rb | 4 +- lib/ruby_ui/tooltip/tooltip_trigger.rb | 2 +- package.json | 10 +- ruby_ui.gemspec | 2 +- test/ruby_ui/accordion_test.rb | 2 +- test/ruby_ui/calendar_test.rb | 2 +- test/ruby_ui/collapsible_test.rb | 2 +- test/ruby_ui/dialog_test.rb | 2 +- test/ruby_ui/sheet_test.rb | 2 +- 111 files changed, 529 insertions(+), 423 deletions(-) rename lib/generators/{rbui => ruby_ui}/base_generator.rb (92%) rename lib/generators/{rbui => ruby_ui}/component_generator.rb (81%) rename lib/generators/{rbui => ruby_ui}/install/install_generator.rb (90%) rename lib/generators/{rbui => ruby_ui}/install/templates/.keep (100%) rename lib/generators/{rbui => ruby_ui}/install/templates/application.tailwind.css.tt (97%) rename lib/generators/{rbui => ruby_ui}/install/templates/base_store_initializer.rb.tt (100%) rename lib/generators/{rbui => ruby_ui}/install/templates/index.js.tt (70%) rename lib/generators/{rbui => ruby_ui}/install/templates/index_view.rb.tt (100%) rename lib/generators/{rbui => ruby_ui}/install/templates/tailwind.config.js.tt (88%) delete mode 100644 lib/rbui.rb diff --git a/README.md b/README.md index c8c04258..47b51b56 100644 --- a/README.md +++ b/README.md @@ -28,26 +28,26 @@ RubyUI is a UI component library designed to let Ruby developers create modern, ### 1. Install the gem ```bash -bundle add rbui +bundle add ruby_ui ``` or add it to your Gemfile: ```ruby -gem "rbui" +gem "ruby_ui" ``` ### 2. Run the installer: ```bash -bin/rails g rbui:install +bin/rails g ruby_ui:install ``` ### 3. Done! 🎉 ## Documentation 📖 -Visit https://rbui.dev/docs/introduction to view the full documentation, including: +Visit https://ruby_ui.dev/docs/introduction to view the full documentation, including: - Detailed component guides - Themes diff --git a/bin/console b/bin/console index 1d47efb2..22d83bec 100644 --- a/bin/console +++ b/bin/console @@ -1,7 +1,7 @@ #!/usr/bin/env ruby require "bundler/setup" -require "rbui" +require "ruby_ui" Bundler.require(:development) diff --git a/lib/generators/rbui/base_generator.rb b/lib/generators/ruby_ui/base_generator.rb similarity index 92% rename from lib/generators/rbui/base_generator.rb rename to lib/generators/ruby_ui/base_generator.rb index 59013631..8f55601a 100644 --- a/lib/generators/rbui/base_generator.rb +++ b/lib/generators/ruby_ui/base_generator.rb @@ -3,7 +3,7 @@ module RubyUI module Generators class BaseGenerator < defined?(Rails::Generators::Base) ? Rails::Generators::Base : Object - namespace "rbui:base" + namespace "ruby_ui:base" source_root File.join(__dir__, "templates") diff --git a/lib/generators/rbui/component_generator.rb b/lib/generators/ruby_ui/component_generator.rb similarity index 81% rename from lib/generators/rbui/component_generator.rb rename to lib/generators/ruby_ui/component_generator.rb index a047b87f..4ff80df9 100644 --- a/lib/generators/rbui/component_generator.rb +++ b/lib/generators/ruby_ui/component_generator.rb @@ -1,7 +1,7 @@ module RubyUI module Generators class ComponentGenerator < RubyUI::Generators::BaseGenerator - namespace "rbui:component" + namespace "ruby_ui:component" source_root File.expand_path("../../..", __dir__) argument :component_name, type: :string, required: true @@ -21,7 +21,7 @@ def copy_common_files end def copy_component_files - puts "Component #{component} not found in rbui gem" if component_source.empty? + puts "Component #{component} not found in ruby_ui gem" if component_source.empty? component_files = Dir.glob("#{component_source}/*") @@ -32,22 +32,22 @@ def copy_component_files end def update_index_file - index_path = File.join(destination_root, "app/components/rbui/index.js") + index_path = File.join(destination_root, "app/components/ruby_ui/index.js") - rbui_index_content = File.read(index_path) + ruby_ui_index_content = File.read(index_path) - updated_rbui_index_content = add_controller_registration(rbui_index_content) + updated_ruby_ui_index_content = add_controller_registration(ruby_ui_index_content) - File.write(index_path, updated_rbui_index_content) + File.write(index_path, updated_ruby_ui_index_content) end - def add_controller_registration(rbui_index_content) + def add_controller_registration(ruby_ui_index_content) valid_controllers = get_valid_controllers - rbui_index_content = update_imports(rbui_index_content, valid_controllers) - update_registrations(rbui_index_content, valid_controllers) + ruby_ui_index_content = update_imports(ruby_ui_index_content, valid_controllers) + update_registrations(ruby_ui_index_content, valid_controllers) # Uncomment the following line if you want to update exports - # rbui_index_content = update_exports(rbui_index_content, valid_controllers) + # ruby_ui_index_content = update_exports(ruby_ui_index_content, valid_controllers) end def get_valid_controllers @@ -74,8 +74,8 @@ def controller_info(controller_file) # Build the new import path new_import_path = new_import_path("./#{relative_path.dirname}/#{file_name}") - # Create the registration name by dasherizing the component name and prefixing with 'rbui--' - registration_name = "rbui--#{component_name.dasherize}" + # Create the registration name by dasherizing the component name and prefixing with 'ruby_ui--' + registration_name = "ruby_ui--#{component_name.dasherize}" # Return a hash with import, registration, and export statements { @@ -92,7 +92,7 @@ def controller_info(controller_file) def new_import_path(relative_path) if using_importmap? - "rbui/#{relative_path.sub(/^\.\//, "")}" + "ruby_ui/#{relative_path.sub(/^\.\//, "")}" else relative_path end @@ -118,11 +118,11 @@ def component end def source_path - @source_path ||= "lib/rbui" + @source_path ||= "lib/ruby_ui" end def destination_path - @destination_path ||= "app/components/rbui" + @destination_path ||= "app/components/ruby_ui" end def component_source diff --git a/lib/generators/rbui/install/install_generator.rb b/lib/generators/ruby_ui/install/install_generator.rb similarity index 90% rename from lib/generators/rbui/install/install_generator.rb rename to lib/generators/ruby_ui/install/install_generator.rb index 804b1d11..117c2182 100644 --- a/lib/generators/rbui/install/install_generator.rb +++ b/lib/generators/ruby_ui/install/install_generator.rb @@ -5,7 +5,7 @@ module RubyUI module Generators class InstallGenerator < RubyUI::Generators::BaseGenerator - namespace "rbui:install" + namespace "ruby_ui:install" if defined?(Rails::Generators::Base) source_root File.expand_path("templates", __dir__) @@ -62,8 +62,8 @@ def install_stuff say "Tailwind CSS is required for RubyUI", :red end - say "Add rbui initializer" - template "base_store_initializer.rb", "config/initializers/rbui.rb" + say "Add ruby_ui initializer" + template "base_store_initializer.rb", "config/initializers/ruby_ui.rb" if using_importmap? say "Using importmaps, adding tailwind-animate" @@ -90,16 +90,16 @@ def install_stuff template "application.tailwind.css", "app/assets/stylesheets/application.tailwind.css", force: true end - def pin_rbui_js + def pin_ruby_ui_js stimulus_path = Rails.root.join("app/javascript/application.js") - package_name = "rbui-js" + package_name = "ruby_ui-js" say "Add RubyUI Stimulus controllers" - # run "mkdir -p app/javascript/controllers/rbui-js" - template "index.js", "app/components/rbui/index.js" + # run "mkdir -p app/javascript/controllers/ruby_ui-js" + template "index.js", "app/components/ruby_ui/index.js" if using_importmap? - gsub_file "app/components/rbui/index.js", /^import { application }.*$/ do + gsub_file "app/components/ruby_ui/index.js", /^import { application }.*$/ do 'import { application } from "controllers/application";' end @@ -109,29 +109,29 @@ def pin_rbui_js say "Pin #{package_name}" append_to_file Rails.root.join("config/importmap.rb") do - "pin_all_from \"app/components/rbui\", under: \"rbui\"\n" + "pin_all_from \"app/components/ruby_ui\", under: \"ruby_ui\"\n" end run "bin/importmap pin #{package_name}" - append_to_file stimulus_path, "\nimport \"rbui\";\n" + append_to_file stimulus_path, "\nimport \"ruby_ui\";\n" manifest_path = Rails.root.join("app/assets/config/manifest.js") if File.exist?(manifest_path) - append_to_file manifest_path, "\n//= link rbui/index.js\n" + append_to_file manifest_path, "\n//= link ruby_ui/index.js\n" end fix_import_maps! else - say "Add rbui-js package" + say "Add ruby_ui-js package" run "yarn add #{package_name}" - append_to_file stimulus_path, "\nimport \"../components/rbui\";\n" + append_to_file stimulus_path, "\nimport \"../components/ruby_ui\";\n" run "yarn build" end end - def include_rbui + def include_ruby_ui message = "Include RubyUI in your global component layout?\n This allows to call RubyUI.Button {\"button\"} / RubyUI::Button.new {\"button\"} with Button {\"button\"} (y/n)" if yes?(message) say "Add RubyUI to your global component layout" diff --git a/lib/generators/rbui/install/templates/.keep b/lib/generators/ruby_ui/install/templates/.keep similarity index 100% rename from lib/generators/rbui/install/templates/.keep rename to lib/generators/ruby_ui/install/templates/.keep diff --git a/lib/generators/rbui/install/templates/application.tailwind.css.tt b/lib/generators/ruby_ui/install/templates/application.tailwind.css.tt similarity index 97% rename from lib/generators/rbui/install/templates/application.tailwind.css.tt rename to lib/generators/ruby_ui/install/templates/application.tailwind.css.tt index 26fa13a0..582befe7 100644 --- a/lib/generators/rbui/install/templates/application.tailwind.css.tt +++ b/lib/generators/ruby_ui/install/templates/application.tailwind.css.tt @@ -25,7 +25,7 @@ --ring: 240 5.9% 10%; --radius: 0.5rem; - /* rbui especific */ + /* ruby_ui especific */ --warning: 38 92% 50%; --warning-foreground: 0 0% 100%; --success: 87 100% 37%; @@ -53,7 +53,7 @@ --input: 240 3.7% 15.9%; --ring: 240 4.9% 83.9%; - /* rbui especific */ + /* ruby_ui especific */ --warning: 38 92% 50%; --warning-foreground: 0 0% 100%; --success: 84 81% 44%; diff --git a/lib/generators/rbui/install/templates/base_store_initializer.rb.tt b/lib/generators/ruby_ui/install/templates/base_store_initializer.rb.tt similarity index 100% rename from lib/generators/rbui/install/templates/base_store_initializer.rb.tt rename to lib/generators/ruby_ui/install/templates/base_store_initializer.rb.tt diff --git a/lib/generators/rbui/install/templates/index.js.tt b/lib/generators/ruby_ui/install/templates/index.js.tt similarity index 70% rename from lib/generators/rbui/install/templates/index.js.tt rename to lib/generators/ruby_ui/install/templates/index.js.tt index be0945b5..68a9f7ad 100644 --- a/lib/generators/rbui/install/templates/index.js.tt +++ b/lib/generators/ruby_ui/install/templates/index.js.tt @@ -4,7 +4,7 @@ import { application } from "../../../app/javascript/controllers/application"; // import ComboboxController from "./combobox/combobox_controller"; // Register all controllers -// application.register("rbui--combobox", ComboboxController); +// application.register("ruby_ui--combobox", ComboboxController); -import RubyUI from "rbui-js"; +import RubyUI from "ruby_ui-js"; RubyUI.initialize(application); diff --git a/lib/generators/rbui/install/templates/index_view.rb.tt b/lib/generators/ruby_ui/install/templates/index_view.rb.tt similarity index 100% rename from lib/generators/rbui/install/templates/index_view.rb.tt rename to lib/generators/ruby_ui/install/templates/index_view.rb.tt diff --git a/lib/generators/rbui/install/templates/tailwind.config.js.tt b/lib/generators/ruby_ui/install/templates/tailwind.config.js.tt similarity index 88% rename from lib/generators/rbui/install/templates/tailwind.config.js.tt rename to lib/generators/ruby_ui/install/templates/tailwind.config.js.tt index 96e389cf..038bdb94 100644 --- a/lib/generators/rbui/install/templates/tailwind.config.js.tt +++ b/lib/generators/ruby_ui/install/templates/tailwind.config.js.tt @@ -1,9 +1,9 @@ -// For importing tailwind styles from rbui gem +// For importing tailwind styles from ruby_ui gem const execSync = require('child_process').execSync; -// Import rbui gem path -const outputRubyUI = execSync('bundle show rbui', { encoding: 'utf-8' }); -const rbui_path = outputRubyUI.trim() + '/**/*.rb'; +// Import ruby_ui gem path +const outputRubyUI = execSync('bundle show ruby_ui', { encoding: 'utf-8' }); +const ruby_ui_path = outputRubyUI.trim() + '/**/*.rb'; const defaultTheme = require('tailwindcss/defaultTheme') @@ -11,11 +11,11 @@ module.exports = { darkMode: ["class"], content: [ './app/views/**/*.{erb,haml,html,slim,rb}', - './app/components/rbui/**/*.rb', + './app/components/ruby_ui/**/*.rb', './app/helpers/**/*.rb', './app/assets/stylesheets/**/*.css', './app/javascript/**/*.js', - rbui_path + ruby_ui_path ], theme: { container: { @@ -60,7 +60,7 @@ module.exports = { DEFAULT: "hsl(var(--card))", foreground: "hsl(var(--card-foreground))", }, - /* rbui especific */ + /* ruby_ui especific */ warning: { DEFAULT: "hsl(var(--warning))", foreground: "hsl(var(--warning-foreground))", diff --git a/lib/rbui.rb b/lib/rbui.rb deleted file mode 100644 index c7996bcd..00000000 --- a/lib/rbui.rb +++ /dev/null @@ -1,57 +0,0 @@ -# frozen_string_literal: true - -require "json" -require "phlex" - -module RubyUI - extend Phlex::Kit - - def self.setup - yield self - create_namespace_module if namespace - end - - def self.create_namespace_module - source_module = self - mod = namespace.to_s.split("::").inject(Object) do |parent, const| - parent.const_get(const) - rescue - parent.const_set(const, Module.new) - end - - mod.singleton_class.class_eval do - define_method :const_missing do |name| - source_module.const_defined?(name) ? source_module.const_get(name) : super(name) - end - - define_method :method_missing do |name, *args, &block| - source_module.respond_to?(name) ? source_module.send(name, *args, &block) : super(name, *args, &block) - end - - define_method :respond_to_missing? do |name, include_private = false| - source_module.respond_to?(name) || super(name, include_private) - end - end - end - - def self.namespace - @namespace ||= nil - end - - def self.namespace=(value) - @namespace = value - end -end - -# Require the Base class first -require_relative "rbui/base" - -# Manually require all the files -Dir.glob(File.join(__dir__, "rbui", "**", "*.rb")).sort.each { |file| require file } - -# If you need to require generators (assuming they're needed) -if defined?(Rails::Generators) - require_relative "generators/rbui/base_generator" - require_relative "generators/rbui/install/install_generator" - require_relative "generators/rbui/component_generator" -end diff --git a/lib/ruby_ui.rb b/lib/ruby_ui.rb index afff68f0..5ec29716 100644 --- a/lib/ruby_ui.rb +++ b/lib/ruby_ui.rb @@ -1 +1,57 @@ -require_relative "rbui" +# frozen_string_literal: true + +require "json" +require "phlex" + +module RubyUI + extend Phlex::Kit + + def self.setup + yield self + create_namespace_module if namespace + end + + def self.create_namespace_module + source_module = self + mod = namespace.to_s.split("::").inject(Object) do |parent, const| + parent.const_get(const) + rescue + parent.const_set(const, Module.new) + end + + mod.singleton_class.class_eval do + define_method :const_missing do |name| + source_module.const_defined?(name) ? source_module.const_get(name) : super(name) + end + + define_method :method_missing do |name, *args, &block| + source_module.respond_to?(name) ? source_module.send(name, *args, &block) : super(name, *args, &block) + end + + define_method :respond_to_missing? do |name, include_private = false| + source_module.respond_to?(name) || super(name, include_private) + end + end + end + + def self.namespace + @namespace ||= nil + end + + def self.namespace=(value) + @namespace = value + end +end + +# Require the Base class first +require_relative "ruby_ui/base" + +# Manually require all the files +Dir.glob(File.join(__dir__, "ruby_ui", "**", "*.rb")).sort.each { |file| require file } + +# If you need to require generators (assuming they're needed) +if defined?(Rails::Generators) + require_relative "generators/ruby_ui/base_generator" + require_relative "generators/ruby_ui/install/install_generator" + require_relative "generators/ruby_ui/component_generator" +end diff --git a/lib/ruby_ui/accordion/accordion_content.rb b/lib/ruby_ui/accordion/accordion_content.rb index 5f2e6c62..1b6feef9 100644 --- a/lib/ruby_ui/accordion/accordion_content.rb +++ b/lib/ruby_ui/accordion/accordion_content.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - rbui__accordion_target: "content" + ruby_ui__accordion_target: "content" }, class: "overflow-y-hidden", style: "height: 0px;" diff --git a/lib/ruby_ui/accordion/accordion_controller.js b/lib/ruby_ui/accordion/accordion_controller.js index d646cefc..0a2f0fd8 100644 --- a/lib/ruby_ui/accordion/accordion_controller.js +++ b/lib/ruby_ui/accordion/accordion_controller.js @@ -1,9 +1,9 @@ -import { Controller } from "@hotwired/stimulus" -import { animate } from "motion" +import { Controller } from "@hotwired/stimulus"; +import { animate } from "motion"; -// Connects to data-controller="rbui--accordion" +// Connects to data-controller="ruby_ui--accordion" export default class extends Controller { - static targets = ['icon', 'content'] + static targets = ["icon", "content"]; static values = { open: { type: Boolean, @@ -15,67 +15,83 @@ export default class extends Controller { }, animationEasing: { type: String, - default: 'ease-in-out', // Default animation easing + default: "ease-in-out", // Default animation easing }, rotateIcon: { type: Number, default: 180, // Default icon rotation (in degrees) }, - } + }; connect() { // Set the initial state of the accordion - let originalAnimationDuration = this.animationDurationValue - this.animationDurationValue = 0 - this.openValue ? this.open() : this.close() - this.animationDurationValue = originalAnimationDuration + let originalAnimationDuration = this.animationDurationValue; + this.animationDurationValue = 0; + this.openValue ? this.open() : this.close(); + this.animationDurationValue = originalAnimationDuration; } // Toggle the 'open' value toggle() { - this.openValue = !this.openValue + this.openValue = !this.openValue; } // Handle changes in the 'open' value openValueChanged(isOpen, wasOpen) { if (isOpen) { - this.open() + this.open(); } else { - this.close() + this.close(); } } // Open the accordion content open() { if (this.hasContentTarget) { - this.revealContent() - this.hasIconTarget && this.rotateIcon() - this.openValue = true + this.revealContent(); + this.hasIconTarget && this.rotateIcon(); + this.openValue = true; } } // Close the accordion content close() { if (this.hasContentTarget) { - this.hideContent() - this.hasIconTarget && this.rotateIcon() - this.openValue = false + this.hideContent(); + this.hasIconTarget && this.rotateIcon(); + this.openValue = false; } } // Reveal the accordion content with animation revealContent() { const contentHeight = this.contentTarget.scrollHeight; - animate(this.contentTarget, { height: `${contentHeight}px` }, { duration: this.animationDurationValue, easing: this.animationEasingValue }) + animate( + this.contentTarget, + { height: `${contentHeight}px` }, + { + duration: this.animationDurationValue, + easing: this.animationEasingValue, + }, + ); } // Hide the accordion content with animation hideContent() { - animate(this.contentTarget, { height: 0 }, { duration: this.animationDurationValue, easing: this.animationEasingValue }) + animate( + this.contentTarget, + { height: 0 }, + { + duration: this.animationDurationValue, + easing: this.animationEasingValue, + }, + ); } // Rotate the accordion icon 180deg using animate function rotateIcon() { - animate(this.iconTarget, { rotate: `${this.openValue ? this.rotateIconValue : 0}deg` }) + animate(this.iconTarget, { + rotate: `${this.openValue ? this.rotateIconValue : 0}deg`, + }); } } diff --git a/lib/ruby_ui/accordion/accordion_default_trigger.rb b/lib/ruby_ui/accordion/accordion_default_trigger.rb index b55aa77d..51187c69 100644 --- a/lib/ruby_ui/accordion/accordion_default_trigger.rb +++ b/lib/ruby_ui/accordion/accordion_default_trigger.rb @@ -11,7 +11,7 @@ def view_template(&block) def default_attrs { - data: {action: "click->rbui--accordion#toggle"}, + data: {action: "click->ruby_ui--accordion#toggle"}, class: "w-full flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline" } end diff --git a/lib/ruby_ui/accordion/accordion_icon.rb b/lib/ruby_ui/accordion/accordion_icon.rb index 48a79961..bda60b1e 100644 --- a/lib/ruby_ui/accordion/accordion_icon.rb +++ b/lib/ruby_ui/accordion/accordion_icon.rb @@ -31,7 +31,7 @@ def icon def default_attrs { class: "opacity-50", - data: {rbui__accordion_target: "icon"} + data: {ruby_ui__accordion_target: "icon"} } end end diff --git a/lib/ruby_ui/accordion/accordion_item.rb b/lib/ruby_ui/accordion/accordion_item.rb index 77b6e557..d2d1937e 100644 --- a/lib/ruby_ui/accordion/accordion_item.rb +++ b/lib/ruby_ui/accordion/accordion_item.rb @@ -17,9 +17,9 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--accordion", - rbui__accordion_open_value: @open, - rbui__accordion_rotate_icon_value: @rotate_icon + controller: "ruby_ui--accordion", + ruby_ui__accordion_open_value: @open, + ruby_ui__accordion_rotate_icon_value: @rotate_icon }, class: "border-b" } diff --git a/lib/ruby_ui/accordion/accordion_trigger.rb b/lib/ruby_ui/accordion/accordion_trigger.rb index 69ff8bf9..471de1d3 100644 --- a/lib/ruby_ui/accordion/accordion_trigger.rb +++ b/lib/ruby_ui/accordion/accordion_trigger.rb @@ -9,7 +9,7 @@ def view_template(&) def default_attrs { type: "button", - data: {action: "click->rbui--accordion#toggle"}, + data: {action: "click->ruby_ui--accordion#toggle"}, class: "w-full flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline" } end diff --git a/lib/ruby_ui/alert_dialog/alert_dialog.rb b/lib/ruby_ui/alert_dialog/alert_dialog.rb index dbf084b3..756fa9c7 100644 --- a/lib/ruby_ui/alert_dialog/alert_dialog.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog.rb @@ -16,8 +16,8 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--alert-dialog", - rbui__alert_dialog_open_value: @open.to_s + controller: "ruby_ui--alert-dialog", + ruby_ui__alert_dialog_open_value: @open.to_s }, class: "inline-block" } diff --git a/lib/ruby_ui/alert_dialog/alert_dialog_cancel.rb b/lib/ruby_ui/alert_dialog/alert_dialog_cancel.rb index 8f0a6f7d..75a4f89c 100644 --- a/lib/ruby_ui/alert_dialog/alert_dialog_cancel.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_cancel.rb @@ -12,7 +12,7 @@ def default_attrs { variant: :outline, data: { - action: "click->rbui--alert-dialog#dismiss" + action: "click->ruby_ui--alert-dialog#dismiss" }, class: "mt-2 sm:mt-0" } diff --git a/lib/ruby_ui/alert_dialog/alert_dialog_content.rb b/lib/ruby_ui/alert_dialog/alert_dialog_content.rb index 32c4f740..b4bcafa5 100644 --- a/lib/ruby_ui/alert_dialog/alert_dialog_content.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_content.rb @@ -37,7 +37,7 @@ def container(&) def default_attrs { data: { - rbui__alert_dialog_target: "content" + ruby_ui__alert_dialog_target: "content" } } end diff --git a/lib/ruby_ui/alert_dialog/alert_dialog_controller.js b/lib/ruby_ui/alert_dialog/alert_dialog_controller.js index 3f19be01..439a450f 100644 --- a/lib/ruby_ui/alert_dialog/alert_dialog_controller.js +++ b/lib/ruby_ui/alert_dialog/alert_dialog_controller.js @@ -1,6 +1,6 @@ import { Controller } from "@hotwired/stimulus"; -// Connects to data-controller="rbui--alert-dialog" +// Connects to data-controller="ruby_ui--alert-dialog" export default class extends Controller { static targets = ["content"]; static values = { diff --git a/lib/ruby_ui/alert_dialog/alert_dialog_trigger.rb b/lib/ruby_ui/alert_dialog/alert_dialog_trigger.rb index b3c44370..127c2c39 100644 --- a/lib/ruby_ui/alert_dialog/alert_dialog_trigger.rb +++ b/lib/ruby_ui/alert_dialog/alert_dialog_trigger.rb @@ -10,7 +10,7 @@ def view_template(&) def default_attrs { - data: {action: "click->rbui--alert-dialog#open"}, + data: {action: "click->ruby_ui--alert-dialog#open"}, class: "inline-block" } end diff --git a/lib/ruby_ui/calendar/calendar.rb b/lib/ruby_ui/calendar/calendar.rb index d15fa1f2..0bb8e815 100644 --- a/lib/ruby_ui/calendar/calendar.rb +++ b/lib/ruby_ui/calendar/calendar.rb @@ -28,10 +28,10 @@ def default_attrs { class: "p-3 space-y-4", data: { - controller: "rbui--calendar", - rbui__calendar_selected_date_value: @selected_date&.to_s, - rbui__calendar_format_value: @date_format, - rbui__calendar_rbui__calendar_input_outlet: @input_id + controller: "ruby_ui--calendar", + ruby_ui__calendar_selected_date_value: @selected_date&.to_s, + ruby_ui__calendar_format_value: @date_format, + ruby_ui__calendar_ruby_ui__calendar_input_outlet: @input_id } } end diff --git a/lib/ruby_ui/calendar/calendar_body.rb b/lib/ruby_ui/calendar/calendar_body.rb index a7755ff6..fe6437c8 100644 --- a/lib/ruby_ui/calendar/calendar_body.rb +++ b/lib/ruby_ui/calendar/calendar_body.rb @@ -11,7 +11,7 @@ def view_template def default_attrs { data: { - rbui__calendar_target: "calendar" + ruby_ui__calendar_target: "calendar" } } end diff --git a/lib/ruby_ui/calendar/calendar_controller.js b/lib/ruby_ui/calendar/calendar_controller.js index bc669a18..bf706e13 100644 --- a/lib/ruby_ui/calendar/calendar_controller.js +++ b/lib/ruby_ui/calendar/calendar_controller.js @@ -2,22 +2,30 @@ import { Controller } from "@hotwired/stimulus"; import Mustache from "mustache"; export default class extends Controller { - static targets = ["calendar", "title", "weekdaysTemplate", "selectedDateTemplate", "todayDateTemplate", "currentMonthDateTemplate", "otherMonthDateTemplate"]; + static targets = [ + "calendar", + "title", + "weekdaysTemplate", + "selectedDateTemplate", + "todayDateTemplate", + "currentMonthDateTemplate", + "otherMonthDateTemplate", + ]; static values = { selectedDate: { type: String, - default: null + default: null, }, viewDate: { type: String, - default: new Date().toISOString().slice(0, 10) + default: new Date().toISOString().slice(0, 10), }, format: { type: String, - default: "yyyy-MM-dd" // Default format - } + default: "yyyy-MM-dd", // Default format + }, }; - static outlets = ["rbui--calendar-input"] + static outlets = ["ruby_ui--calendar-input"]; initialize() { this.updateCalendar(); // Initial calendar render @@ -49,7 +57,7 @@ export default class extends Controller { this.updateCalendar(); // update the input value - this.rbuiCalendarInputOutlets.forEach(outlet => { + this.ruby_uiCalendarInputOutlets.forEach((outlet) => { const formattedDate = this.formatDate(this.selectedDate()); outlet.setValue(formattedDate); }); @@ -77,34 +85,47 @@ export default class extends Controller { } calendarDays() { - return this.getFullWeeksStartAndEndInMonth().map(week => this.renderWeek(week)).join(''); + return this.getFullWeeksStartAndEndInMonth() + .map((week) => this.renderWeek(week)) + .join(""); } renderWeek(week) { - const days = week.map(day => { - return this.renderDay(day); - }).join(''); + const days = week + .map((day) => { + return this.renderDay(day); + }) + .join(""); return `${days}`; } renderDay(day) { const today = new Date(); - let dateHTML = ''; + let dateHTML = ""; const data = { day: day, dayDate: day.getDate() }; if (day.toDateString() === this.selectedDate().toDateString()) { // selectedDate // Render the selected date template target innerHTML with Mustache - dateHTML = Mustache.render(this.selectedDateTemplateTarget.innerHTML, data); + dateHTML = Mustache.render( + this.selectedDateTemplateTarget.innerHTML, + data, + ); } else if (day.toDateString() === today.toDateString()) { // todayDate dateHTML = Mustache.render(this.todayDateTemplateTarget.innerHTML, data); } else if (day.getMonth() === this.viewDate().getMonth()) { // currentMonthDate - dateHTML = Mustache.render(this.currentMonthDateTemplateTarget.innerHTML, data); + dateHTML = Mustache.render( + this.currentMonthDateTemplateTarget.innerHTML, + data, + ); } else { // otherMonthDate - dateHTML = Mustache.render(this.otherMonthDateTemplateTarget.innerHTML, data); + dateHTML = Mustache.render( + this.otherMonthDateTemplateTarget.innerHTML, + data, + ); } return dateHTML; } @@ -120,7 +141,9 @@ export default class extends Controller { } viewDate() { - return this.viewDateValue ? new Date(this.viewDateValue) : this.selectedDate(); + return this.viewDateValue + ? new Date(this.viewDateValue) + : this.selectedDate(); } getFullWeeksStartAndEndInMonth() { @@ -146,7 +169,7 @@ export default class extends Controller { end = 7 - firstDate.getDay() + 1; weeks.push({ start: start, - end: end + end: end, }); start = end + 1; end = end + 7; @@ -154,7 +177,7 @@ export default class extends Controller { while (start <= numDays) { weeks.push({ start: start, - end: end + end: end, }); start = end + 1; end = end + 7; @@ -163,7 +186,7 @@ export default class extends Controller { end = end - numDays; weeks.push({ start: start, - end: end + end: end, }); break; } @@ -190,31 +213,38 @@ export default class extends Controller { const monthName = date.toLocaleString("en-US", { month: "long" }); const daySuffix = this.getDaySuffix(day); - const map = { - 'yyyy': year, - 'MM': ('0' + month).slice(-2), - 'dd': ('0' + day).slice(-2), - 'HH': ('0' + hours).slice(-2), - 'mm': ('0' + minutes).slice(-2), - 'ss': ('0' + seconds).slice(-2), - 'EEEE': dayOfWeek, - 'MMMM': monthName, - 'do': day + daySuffix, - 'PPPP': `${dayOfWeek}, ${monthName} ${day}${daySuffix}, ${year}` + yyyy: year, + MM: ("0" + month).slice(-2), + dd: ("0" + day).slice(-2), + HH: ("0" + hours).slice(-2), + mm: ("0" + minutes).slice(-2), + ss: ("0" + seconds).slice(-2), + EEEE: dayOfWeek, + MMMM: monthName, + do: day + daySuffix, + PPPP: `${dayOfWeek}, ${monthName} ${day}${daySuffix}, ${year}`, }; - const formattedDate = format.replace(/yyyy|MM|dd|HH|mm|ss|EEEE|MMMM|do|PPPP/g, matched => map[matched]); + const formattedDate = format.replace( + /yyyy|MM|dd|HH|mm|ss|EEEE|MMMM|do|PPPP/g, + (matched) => map[matched], + ); return formattedDate; } getDaySuffix(day) { - if (day > 3 && day < 21) return 'th'; + if (day > 3 && day < 21) return "th"; switch (day % 10) { - case 1: return "st"; - case 2: return "nd"; - case 3: return "rd"; - default: return "th"; + case 1: + return "st"; + case 2: + return "nd"; + case 3: + return "rd"; + default: + return "th"; } } -} \ No newline at end of file +} + diff --git a/lib/ruby_ui/calendar/calendar_days.rb b/lib/ruby_ui/calendar/calendar_days.rb index b669643c..ceb6e9a2 100644 --- a/lib/ruby_ui/calendar/calendar_days.rb +++ b/lib/ruby_ui/calendar/calendar_days.rb @@ -17,7 +17,7 @@ def render_selected_date_template date_template("selectedDateTemplate") do button( data_day: "{{day}}", - data_action: "click->rbui--calendar#selectDay", + data_action: "click->ruby_ui--calendar#selectDay", name: "day", class: [ @@ -36,7 +36,7 @@ def render_today_date_template date_template("todayDateTemplate") do button( data_day: "{{day}}", - data_action: "click->rbui--calendar#selectDay", + data_action: "click->ruby_ui--calendar#selectDay", name: "day", class: [ @@ -54,7 +54,7 @@ def render_current_month_date_template date_template("currentMonthDateTemplate") do button( data_day: "{{day}}", - data_action: "click->rbui--calendar#selectDay", + data_action: "click->ruby_ui--calendar#selectDay", name: "day", class: [ @@ -72,7 +72,7 @@ def render_other_month_date_template date_template("otherMonthDateTemplate") do button( data_day: "{{day}}", - data_action: " click->rbui--calendar#selectDay", + data_action: " click->ruby_ui--calendar#selectDay", name: "day", class: [ @@ -87,7 +87,7 @@ def render_other_month_date_template end def date_template(target, &block) - all_template_tag(data: {rbui__calendar_target: target}) do + all_template_tag(data: {ruby_ui__calendar_target: target}) do td( class: "relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected])]:rounded-md", diff --git a/lib/ruby_ui/calendar/calendar_next.rb b/lib/ruby_ui/calendar/calendar_next.rb index af93bdd6..5b0c72a7 100644 --- a/lib/ruby_ui/calendar/calendar_next.rb +++ b/lib/ruby_ui/calendar/calendar_next.rb @@ -36,7 +36,7 @@ def default_attrs class: "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input hover:bg-accent hover:text-accent-foreground h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute right-1", type: "button", - data_action: "click->rbui--calendar#nextMonth" + data_action: "click->ruby_ui--calendar#nextMonth" } end end diff --git a/lib/ruby_ui/calendar/calendar_prev.rb b/lib/ruby_ui/calendar/calendar_prev.rb index 7fc2f5c9..31ebd33c 100644 --- a/lib/ruby_ui/calendar/calendar_prev.rb +++ b/lib/ruby_ui/calendar/calendar_prev.rb @@ -36,7 +36,7 @@ def default_attrs class: "rdp-button_reset rdp-button inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input hover:bg-accent hover:text-accent-foreground h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute left-1", type: "button", - data_action: "click->rbui--calendar#prevMonth" + data_action: "click->ruby_ui--calendar#prevMonth" } end end diff --git a/lib/ruby_ui/calendar/calendar_title.rb b/lib/ruby_ui/calendar/calendar_title.rb index e121a214..3c844c6d 100644 --- a/lib/ruby_ui/calendar/calendar_title.rb +++ b/lib/ruby_ui/calendar/calendar_title.rb @@ -19,7 +19,7 @@ def default_attrs aria_live: "polite", role: "presentation", data: { - rbui__calendar_target: "title" + ruby_ui__calendar_target: "title" } } end diff --git a/lib/ruby_ui/calendar/calendar_weekdays.rb b/lib/ruby_ui/calendar/calendar_weekdays.rb index a27bfde6..9aa4c64a 100644 --- a/lib/ruby_ui/calendar/calendar_weekdays.rb +++ b/lib/ruby_ui/calendar/calendar_weekdays.rb @@ -5,7 +5,7 @@ class CalendarWeekdays < Base DAYS = %w[Monday Tuesday Wednesday Thursday Friday Saturday Sunday].freeze def view_template - all_template_tag(data: {rbui__calendar_target: "weekdaysTemplate"}) do + all_template_tag(data: {ruby_ui__calendar_target: "weekdaysTemplate"}) do thead(**attrs) do tr(class: "flex") do DAYS.each do |day| diff --git a/lib/ruby_ui/chart/chart.rb b/lib/ruby_ui/chart/chart.rb index 5739f3b8..bc47d6f0 100644 --- a/lib/ruby_ui/chart/chart.rb +++ b/lib/ruby_ui/chart/chart.rb @@ -15,8 +15,8 @@ def view_template(&) def default_attrs { - data_controller: "rbui--chart", - data_rbui__chart_options_value: @options + data_controller: "ruby_ui--chart", + data_ruby_ui__chart_options_value: @options } end end diff --git a/lib/ruby_ui/checkbox/checkbox.rb b/lib/ruby_ui/checkbox/checkbox.rb index 4c6d2cf7..9afd6658 100644 --- a/lib/ruby_ui/checkbox/checkbox.rb +++ b/lib/ruby_ui/checkbox/checkbox.rb @@ -12,9 +12,9 @@ def default_attrs { type: "checkbox", data: { - rbui__form_field_target: "input", - rbui__checkbox_group_target: "checkbox", - action: "input->rbui--form-field#onInput invalid->rbui--form-field#onInvalid change->rbui--checkbox-group#onChange" + ruby_ui__form_field_target: "input", + ruby_ui__checkbox_group_target: "checkbox", + action: "input->ruby_ui--form-field#onInput invalid->ruby_ui--form-field#onInvalid change->ruby_ui--checkbox-group#onChange" }, class: "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 accent-primary" } diff --git a/lib/ruby_ui/checkbox/checkbox_group.rb b/lib/ruby_ui/checkbox/checkbox_group.rb index dd640dc5..cc14bf53 100644 --- a/lib/ruby_ui/checkbox/checkbox_group.rb +++ b/lib/ruby_ui/checkbox/checkbox_group.rb @@ -12,7 +12,7 @@ def default_attrs { role: "group", data: { - controller: "rbui--checkbox-group" + controller: "ruby_ui--checkbox-group" } } end diff --git a/lib/ruby_ui/clipboard/clipboard.rb b/lib/ruby_ui/clipboard/clipboard.rb index 64e0ec92..4253459e 100644 --- a/lib/ruby_ui/clipboard/clipboard.rb +++ b/lib/ruby_ui/clipboard/clipboard.rb @@ -30,11 +30,11 @@ def error_popover def default_attrs { data: { - controller: "rbui--clipboard", - action: "click@window->rbui--clipboard#onClickOutside", - rbui__clipboard_success_value: @success, - rbui__clipboard_error_value: @error, - rbui__clipboard_options_value: @options.to_json + controller: "ruby_ui--clipboard", + action: "click@window->ruby_ui--clipboard#onClickOutside", + ruby_ui__clipboard_success_value: @success, + ruby_ui__clipboard_error_value: @error, + ruby_ui__clipboard_options_value: @options.to_json } } end diff --git a/lib/ruby_ui/clipboard/clipboard_popover.rb b/lib/ruby_ui/clipboard/clipboard_popover.rb index da529a25..f1ae18f0 100644 --- a/lib/ruby_ui/clipboard/clipboard_popover.rb +++ b/lib/ruby_ui/clipboard/clipboard_popover.rb @@ -11,7 +11,7 @@ def view_template(&block) div( class: "hidden", style: "width: max-content; position: absolute; top: 0; left: 0;", - data: {rbui__clipboard_target: clipboard_target} + data: {ruby_ui__clipboard_target: clipboard_target} ) do div(**attrs, &block) end diff --git a/lib/ruby_ui/clipboard/clipboard_source.rb b/lib/ruby_ui/clipboard/clipboard_source.rb index f26392fe..ef2771f1 100644 --- a/lib/ruby_ui/clipboard/clipboard_source.rb +++ b/lib/ruby_ui/clipboard/clipboard_source.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - rbui__clipboard_target: "source" + ruby_ui__clipboard_target: "source" } } end diff --git a/lib/ruby_ui/clipboard/clipboard_trigger.rb b/lib/ruby_ui/clipboard/clipboard_trigger.rb index b9dc4e6a..b7da6767 100644 --- a/lib/ruby_ui/clipboard/clipboard_trigger.rb +++ b/lib/ruby_ui/clipboard/clipboard_trigger.rb @@ -11,8 +11,8 @@ def view_template(&) def default_attrs { data: { - rbui__clipboard_target: "trigger", - action: "click->rbui--clipboard#copy" + ruby_ui__clipboard_target: "trigger", + action: "click->ruby_ui--clipboard#copy" } } end diff --git a/lib/ruby_ui/collapsible/collapsible.rb b/lib/ruby_ui/collapsible/collapsible.rb index d11bc3c8..1f094012 100644 --- a/lib/ruby_ui/collapsible/collapsible.rb +++ b/lib/ruby_ui/collapsible/collapsible.rb @@ -16,8 +16,8 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--collapsible", - rbui__collapsible_open_value: @open + controller: "ruby_ui--collapsible", + ruby_ui__collapsible_open_value: @open } } end diff --git a/lib/ruby_ui/collapsible/collapsible_content.rb b/lib/ruby_ui/collapsible/collapsible_content.rb index 1301605c..8af7379f 100644 --- a/lib/ruby_ui/collapsible/collapsible_content.rb +++ b/lib/ruby_ui/collapsible/collapsible_content.rb @@ -10,7 +10,7 @@ def view_template(&) def default_attrs { - data: {rbui__collapsible_target: "content"}, + data: {ruby_ui__collapsible_target: "content"}, class: "overflow-y-hidden" } end diff --git a/lib/ruby_ui/collapsible/collapsible_trigger.rb b/lib/ruby_ui/collapsible/collapsible_trigger.rb index a436bb87..b0d76fdb 100644 --- a/lib/ruby_ui/collapsible/collapsible_trigger.rb +++ b/lib/ruby_ui/collapsible/collapsible_trigger.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - action: "click->rbui--collapsible#toggle" + action: "click->ruby_ui--collapsible#toggle" } } end diff --git a/lib/ruby_ui/combobox/combobox.rb b/lib/ruby_ui/combobox/combobox.rb index 39afec7d..81641d1c 100644 --- a/lib/ruby_ui/combobox/combobox.rb +++ b/lib/ruby_ui/combobox/combobox.rb @@ -11,11 +11,11 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--combobox", - rbui__combobox_open_value: "false", - action: "click@window->rbui--combobox#onClickOutside", - rbui__combobox_rbui__combobox_content_outlet: ".combobox-content", - rbui__combobox_rbui__combobox_item_outlet: ".combobox-item" + controller: "ruby_ui--combobox", + ruby_ui__combobox_open_value: "false", + action: "click@window->ruby_ui--combobox#onClickOutside", + ruby_ui__combobox_ruby_ui__combobox_content_outlet: ".combobox-content", + ruby_ui__combobox_ruby_ui__combobox_item_outlet: ".combobox-item" }, class: "group/combobox w-full relative" } diff --git a/lib/ruby_ui/combobox/combobox_content.rb b/lib/ruby_ui/combobox/combobox_content.rb index 2c13b449..e0bead32 100644 --- a/lib/ruby_ui/combobox/combobox_content.rb +++ b/lib/ruby_ui/combobox/combobox_content.rb @@ -9,7 +9,7 @@ def initialize(**attrs) def view_template(&) div(**attrs) do - div(class: "min-w-max max-h-[300px] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none animate-out group-data-[rbui--combobox-open-value=true]/combobox:animate-in fade-out-0 group-data-[rbui--combobox-open-value=true]/combobox:fade-in-0 zoom-out-95 group-data-[rbui--combobox-open-value=true]/combobox:zoom-in-95 slide-in-from-top-2", &) + div(class: "min-w-max max-h-[300px] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none animate-out group-data-[ruby_ui--combobox-open-value=true]/combobox:animate-in fade-out-0 group-data-[ruby_ui--combobox-open-value=true]/combobox:fade-in-0 zoom-out-95 group-data-[ruby_ui--combobox-open-value=true]/combobox:zoom-in-95 slide-in-from-top-2", &) end end @@ -20,9 +20,9 @@ def default_attrs id: @id, role: "listbox", data: { - controller: "rbui--combobox-content", - rbui__combobox_target: "content", - action: "keydown.enter->rbui--combobox#onKeyEnter keydown.esc->rbui--combobox#onEscKey keydown.down->rbui--combobox#onKeyDown keydown.up->rbui--combobox#onKeyUp" + controller: "ruby_ui--combobox-content", + ruby_ui__combobox_target: "content", + action: "keydown.enter->ruby_ui--combobox#onKeyEnter keydown.esc->ruby_ui--combobox#onEscKey keydown.down->ruby_ui--combobox#onKeyDown keydown.up->ruby_ui--combobox#onKeyUp" }, class: "combobox-content hidden w-full absolute top-0 left-0 z-50" } diff --git a/lib/ruby_ui/combobox/combobox_content_controller.js b/lib/ruby_ui/combobox/combobox_content_controller.js index 8c04529a..2c825cbf 100644 --- a/lib/ruby_ui/combobox/combobox_content_controller.js +++ b/lib/ruby_ui/combobox/combobox_content_controller.js @@ -18,13 +18,18 @@ export default class extends Controller { #updateGroupVisibility() { this.groupTargets.forEach((group) => { - const hasVisibleItems = group.querySelectorAll("[data-rbui--combobox-content-target='item']:not(.hidden)").length > 0; + const hasVisibleItems = + group.querySelectorAll( + "[data-ruby_ui--combobox-content-target='item']:not(.hidden)", + ).length > 0; this.#toggleVisibility([group], hasVisibleItems); }); } #filterItems(query) { - return this.itemTargets.filter((item) => this.#sanitizeStr(item.innerText).includes(query)); + return this.itemTargets.filter((item) => + this.#sanitizeStr(item.innerText).includes(query), + ); } #toggleVisibility(elements, isVisible) { diff --git a/lib/ruby_ui/combobox/combobox_controller.js b/lib/ruby_ui/combobox/combobox_controller.js index 89c4caf8..8caeac86 100644 --- a/lib/ruby_ui/combobox/combobox_controller.js +++ b/lib/ruby_ui/combobox/combobox_controller.js @@ -1,12 +1,20 @@ import { Controller } from "@hotwired/stimulus"; import { computePosition, autoUpdate, offset } from "@floating-ui/dom"; -export const POPOVER_OPENED = "rbui--combobox#popoverOpened"; +export const POPOVER_OPENED = "ruby_ui--combobox#popoverOpened"; export default class extends Controller { - static targets = ["input", "trigger", "value", "content", "search", "list", "item"]; + static targets = [ + "input", + "trigger", + "value", + "content", + "search", + "list", + "item", + ]; static values = { open: Boolean }; - static outlets = ["rbui--combobox-item", "rbui--combobox-content"]; + static outlets = ["ruby_ui--combobox-item", "ruby_ui--combobox-content"]; constructor(...args) { super(...args); @@ -41,15 +49,17 @@ export default class extends Controller { onKeyEnter(event) { event.preventDefault(); - const currentItem = this.itemTargets.find((item) => item.getAttribute("aria-current") === "true"); + const currentItem = this.itemTargets.find( + (item) => item.getAttribute("aria-current") === "true", + ); if (!currentItem) this.#closeContent(); - this.#setValueDispatchEventAndCloseContent(currentItem) + this.#setValueDispatchEventAndCloseContent(currentItem); } onSearchInput(event) { - this.rbuiComboboxContentOutlet.handleSearchInput(event.target.value); + this.ruby_uiComboboxContentOutlet.handleSearchInput(event.target.value); this.#findAndSetCurrentAndActiveDescendant(); } @@ -70,7 +80,9 @@ export default class extends Controller { onKeyDown(event) { event.preventDefault(); - const currentIndex = this.itemTargets.findIndex((item) => item.getAttribute("aria-current") === "true"); + const currentIndex = this.itemTargets.findIndex( + (item) => item.getAttribute("aria-current") === "true", + ); if (currentIndex + 1 < this.itemTargets.length) { this.itemTargets[currentIndex].removeAttribute("aria-current"); @@ -82,7 +94,9 @@ export default class extends Controller { onKeyUp(event) { event.preventDefault(); - const currentIndex = this.itemTargets.findIndex((item) => item.getAttribute("aria-current") === "true"); + const currentIndex = this.itemTargets.findIndex( + (item) => item.getAttribute("aria-current") === "true", + ); if (currentIndex > 0) { this.itemTargets[currentIndex].removeAttribute("aria-current"); @@ -112,14 +126,18 @@ export default class extends Controller { } #findAndSetCurrentAndActiveDescendant() { - const selectedItem = this.itemTargets.find((item) => item.getAttribute("aria-selected") === "true"); + const selectedItem = this.itemTargets.find( + (item) => item.getAttribute("aria-selected") === "true", + ); if (selectedItem) { this.#setCurrentAndActiveDescendant(selectedItem); return; } - const selectedVisible = this.itemTargets.find((item) => !item.classList.contains("hidden")); + const selectedVisible = this.itemTargets.find( + (item) => !item.classList.contains("hidden"), + ); this.#setCurrentAndActiveDescendant(selectedVisible); } @@ -127,14 +145,19 @@ export default class extends Controller { if (!item) return; item.setAttribute("aria-current", "true"); - this.triggerTarget.setAttribute("aria-activedescendant", item.getAttribute("id")); + this.triggerTarget.setAttribute( + "aria-activedescendant", + item.getAttribute("id"), + ); } #setValueDispatchEventAndCloseContent(item) { const oldValue = this.inputTarget.value; const newValue = item.dataset.value; - this.rbuiComboboxItemOutlets.forEach(item => item.handleItemSelected(newValue)); + this.ruby_uiComboboxItemOutlets.forEach((item) => + item.handleItemSelected(newValue), + ); this.inputTarget.value = item.dataset.value; this.valueTarget.innerText = item.innerText; @@ -143,7 +166,6 @@ export default class extends Controller { this.#closeContent(); } - #dispatchOnChange(oldValue, newValue) { if (oldValue === newValue) return; @@ -166,7 +188,9 @@ export default class extends Controller { #setFloatingElement() { this.cleanup = autoUpdate(this.triggerTarget, this.contentTarget, () => { - computePosition(this.triggerTarget, this.contentTarget, { middleware: [offset(4)] }).then(({ x, y }) => { + computePosition(this.triggerTarget, this.contentTarget, { + middleware: [offset(4)], + }).then(({ x, y }) => { Object.assign(this.contentTarget.style, { left: `${x}px`, top: `${y}px`, diff --git a/lib/ruby_ui/combobox/combobox_empty.rb b/lib/ruby_ui/combobox/combobox_empty.rb index c48c6831..552c5a3c 100644 --- a/lib/ruby_ui/combobox/combobox_empty.rb +++ b/lib/ruby_ui/combobox/combobox_empty.rb @@ -13,7 +13,7 @@ def default_attrs role: "presentation", class: "hidden py-6 text-center text-sm", data: { - rbui__combobox_content_target: "empty" + ruby_ui__combobox_content_target: "empty" } } end diff --git a/lib/ruby_ui/combobox/combobox_group.rb b/lib/ruby_ui/combobox/combobox_group.rb index 66761fd4..1620d032 100644 --- a/lib/ruby_ui/combobox/combobox_group.rb +++ b/lib/ruby_ui/combobox/combobox_group.rb @@ -30,7 +30,7 @@ def default_attrs role: "presentation", data: { value: @heading, - rbui__combobox_content_target: "group" + ruby_ui__combobox_content_target: "group" } } end diff --git a/lib/ruby_ui/combobox/combobox_input.rb b/lib/ruby_ui/combobox/combobox_input.rb index 628f3ae1..bab4122c 100644 --- a/lib/ruby_ui/combobox/combobox_input.rb +++ b/lib/ruby_ui/combobox/combobox_input.rb @@ -12,9 +12,9 @@ def default_attrs { class: "hidden", data: { - rbui__combobox_target: "input", - rbui__form_field_target: "input", - action: "change->rbui--form-field#onChange invalid->rbui--form-field#onInvalid" + ruby_ui__combobox_target: "input", + ruby_ui__form_field_target: "input", + action: "change->ruby_ui--form-field#onChange invalid->ruby_ui--form-field#onInvalid" } } end diff --git a/lib/ruby_ui/combobox/combobox_item.rb b/lib/ruby_ui/combobox/combobox_item.rb index 41442cc0..319b9afb 100644 --- a/lib/ruby_ui/combobox/combobox_item.rb +++ b/lib/ruby_ui/combobox/combobox_item.rb @@ -41,10 +41,10 @@ def default_attrs "combobox-item group relative flex cursor-pointer select-none items-center gap-x-2 rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent hover:text-accent-foreground aria-[current]:bg-accent aria-[current]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", data: { value: @value, - rbui__combobox_target: "item", - rbui__combobox_content_target: "item", - controller: "rbui--combobox-item", - action: "click->rbui--combobox#onItemSelected" + ruby_ui__combobox_target: "item", + ruby_ui__combobox_content_target: "item", + controller: "ruby_ui--combobox-item", + action: "click->ruby_ui--combobox#onItemSelected" }, aria_selected: "false" } diff --git a/lib/ruby_ui/combobox/combobox_list.rb b/lib/ruby_ui/combobox/combobox_list.rb index ec84c252..278111f4 100644 --- a/lib/ruby_ui/combobox/combobox_list.rb +++ b/lib/ruby_ui/combobox/combobox_list.rb @@ -19,7 +19,7 @@ def default_attrs { id: @id, data: { - rbui__combobox_target: "list" + ruby_ui__combobox_target: "list" }, role: "listbox", tabindex: "-1" diff --git a/lib/ruby_ui/combobox/combobox_search_input.rb b/lib/ruby_ui/combobox/combobox_search_input.rb index 4bebab7c..0d1ec828 100644 --- a/lib/ruby_ui/combobox/combobox_search_input.rb +++ b/lib/ruby_ui/combobox/combobox_search_input.rb @@ -44,8 +44,8 @@ def default_attrs "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50", placeholder: @placeholder, data: { - action: "input->rbui--combobox#onSearchInput", - rbui__combobox_target: "search" + action: "input->ruby_ui--combobox#onSearchInput", + ruby_ui__combobox_target: "search" }, autocomplete: "off", autocorrect: "off", diff --git a/lib/ruby_ui/combobox/combobox_trigger.rb b/lib/ruby_ui/combobox/combobox_trigger.rb index e2adcaa3..80f45470 100644 --- a/lib/ruby_ui/combobox/combobox_trigger.rb +++ b/lib/ruby_ui/combobox/combobox_trigger.rb @@ -34,8 +34,8 @@ def icon def default_attrs { data: { - action: "rbui--combobox#onTriggerClick", - rbui__combobox_target: "trigger" + action: "ruby_ui--combobox#onTriggerClick", + ruby_ui__combobox_target: "trigger" }, type: "button", role: "combobox", diff --git a/lib/ruby_ui/combobox/combobox_value.rb b/lib/ruby_ui/combobox/combobox_value.rb index 27067fde..f011a5b1 100644 --- a/lib/ruby_ui/combobox/combobox_value.rb +++ b/lib/ruby_ui/combobox/combobox_value.rb @@ -18,7 +18,7 @@ def view_template(&block) def default_attrs { data: { - rbui__combobox_target: "value" + ruby_ui__combobox_target: "value" }, class: "pointer-events-none" } diff --git a/lib/ruby_ui/command/command_controller.js b/lib/ruby_ui/command/command_controller.js index a53a40eb..933e909a 100644 --- a/lib/ruby_ui/command/command_controller.js +++ b/lib/ruby_ui/command/command_controller.js @@ -1,16 +1,16 @@ import { Controller } from "@hotwired/stimulus"; -import Fuse from 'fuse.js'; +import Fuse from "fuse.js"; -// Connects to data-controller="rbui--command" +// Connects to data-controller="ruby_ui--command" export default class extends Controller { - static targets = ["input", "group", "item", "empty", "content"] + static targets = ["input", "group", "item", "empty", "content"]; static values = { open: { type: Boolean, - default: false + default: false, }, - } + }; connect() { this.inputTarget.focus(); @@ -19,24 +19,23 @@ export default class extends Controller { this.selectedIndex = -1; if (this.openValue) { - this.open() + this.open(); } } open(e) { - e.preventDefault() - document.body.insertAdjacentHTML('beforeend', this.contentTarget.innerHTML) + e.preventDefault(); + document.body.insertAdjacentHTML("beforeend", this.contentTarget.innerHTML); // prevent scroll on body - document.body.classList.add('overflow-hidden') + document.body.classList.add("overflow-hidden"); } - dismiss() { // allow scroll on body - document.body.classList.remove('overflow-hidden') + document.body.classList.remove("overflow-hidden"); // remove the element - console.log("this.element", this.element) - this.element.remove() + console.log("this.element", this.element); + this.element.remove(); } filter(e) { @@ -52,19 +51,24 @@ export default class extends Controller { this.toggleVisibility(this.itemTargets, false); const results = this.searchIndex.search(query); - results.forEach(result => this.toggleVisibility([result.item.element], true)); + results.forEach((result) => + this.toggleVisibility([result.item.element], true), + ); this.toggleVisibility(this.emptyTargets, results.length === 0); this.updateGroupVisibility(); } toggleVisibility(elements, isVisible) { - elements.forEach(el => el.classList.toggle("hidden", !isVisible)); + elements.forEach((el) => el.classList.toggle("hidden", !isVisible)); } updateGroupVisibility() { - this.groupTargets.forEach(group => { - const hasVisibleItems = group.querySelectorAll("[data-rbui--command-target='item']:not(.hidden)").length > 0; + this.groupTargets.forEach((group) => { + const hasVisibleItems = + group.querySelectorAll( + "[data-ruby_ui--command-target='item']:not(.hidden)", + ).length > 0; this.toggleVisibility([group], hasVisibleItems); }); } @@ -81,19 +85,24 @@ export default class extends Controller { threshold: 0.2, includeMatches: true, }; - const items = this.itemTargets.map(el => ({ value: el.dataset.value, element: el })); + const items = this.itemTargets.map((el) => ({ + value: el.dataset.value, + element: el, + })); return new Fuse(items, options); } handleKeydown(e) { - const visibleItems = this.itemTargets.filter(item => !item.classList.contains('hidden')); - if (e.key === 'ArrowDown') { + const visibleItems = this.itemTargets.filter( + (item) => !item.classList.contains("hidden"), + ); + if (e.key === "ArrowDown") { e.preventDefault(); this.updateSelectedItem(visibleItems, 1); - } else if (e.key === 'ArrowUp') { + } else if (e.key === "ArrowUp") { e.preventDefault(); this.updateSelectedItem(visibleItems, -1); - } else if (e.key === 'Enter' && this.selectedIndex !== -1) { + } else if (e.key === "Enter" && this.selectedIndex !== -1) { e.preventDefault(); visibleItems[this.selectedIndex].click(); } @@ -117,11 +126,11 @@ export default class extends Controller { } toggleAriaSelected(element, isSelected) { - element.setAttribute('aria-selected', isSelected.toString()); + element.setAttribute("aria-selected", isSelected.toString()); } deselectAll() { - this.itemTargets.forEach(item => this.toggleAriaSelected(item, false)); + this.itemTargets.forEach((item) => this.toggleAriaSelected(item, false)); this.selectedIndex = -1; } } diff --git a/lib/ruby_ui/command/command_dialog.rb b/lib/ruby_ui/command/command_dialog.rb index 83c4b3e2..7a179185 100644 --- a/lib/ruby_ui/command/command_dialog.rb +++ b/lib/ruby_ui/command/command_dialog.rb @@ -10,7 +10,7 @@ def view_template(&) def default_attrs { - data: {controller: "rbui--command"} + data: {controller: "ruby_ui--command"} } end end diff --git a/lib/ruby_ui/command/command_dialog_content.rb b/lib/ruby_ui/command/command_dialog_content.rb index bb7a5a31..893ad0b5 100644 --- a/lib/ruby_ui/command/command_dialog_content.rb +++ b/lib/ruby_ui/command/command_dialog_content.rb @@ -17,8 +17,8 @@ def initialize(size: :md, **attrs) end def view_template(&block) - all_template_tag(data: {rbui__command_target: "content"}) do - div(data: {controller: "rbui--command"}) do + all_template_tag(data: {ruby_ui__command_target: "content"}) do + div(data: {controller: "ruby_ui--command"}) do backdrop div(**attrs, &block) end @@ -40,7 +40,7 @@ def default_attrs def backdrop div( data_state: "open", - data_action: "click->rbui--command#dismiss esc->rbui--command#dismiss", + data_action: "click->ruby_ui--command#dismiss esc->ruby_ui--command#dismiss", class: "fixed pointer-events-auto inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0" ) end diff --git a/lib/ruby_ui/command/command_dialog_trigger.rb b/lib/ruby_ui/command/command_dialog_trigger.rb index ef84dbd8..ec70d5d5 100644 --- a/lib/ruby_ui/command/command_dialog_trigger.rb +++ b/lib/ruby_ui/command/command_dialog_trigger.rb @@ -8,7 +8,7 @@ class CommandDialogTrigger < Base ].freeze def initialize(keybindings: DEFAULT_KEYBINDINGS, **attrs) - @keybindings = keybindings.map { |kb| "#{kb}->rbui--command#open" } + @keybindings = keybindings.map { |kb| "#{kb}->ruby_ui--command#open" } super(**attrs) end @@ -21,7 +21,7 @@ def view_template(&) def default_attrs { data: { - action: ["click->rbui--command#open", @keybindings.join(" ")] + action: ["click->ruby_ui--command#open", @keybindings.join(" ")] } } end diff --git a/lib/ruby_ui/command/command_empty.rb b/lib/ruby_ui/command/command_empty.rb index 8fb89fdf..d0f9c74f 100644 --- a/lib/ruby_ui/command/command_empty.rb +++ b/lib/ruby_ui/command/command_empty.rb @@ -12,7 +12,7 @@ def default_attrs { class: "py-6 text-center text-sm", role: "presentation", - data: {rbui__command_target: "empty"} + data: {ruby_ui__command_target: "empty"} } end end diff --git a/lib/ruby_ui/command/command_group.rb b/lib/ruby_ui/command/command_group.rb index 6c2458e5..7eb5b7d6 100644 --- a/lib/ruby_ui/command/command_group.rb +++ b/lib/ruby_ui/command/command_group.rb @@ -32,7 +32,7 @@ def default_attrs role: "presentation", data: { value: @title, - rbui__command_target: "group" + ruby_ui__command_target: "group" } } end diff --git a/lib/ruby_ui/command/command_input.rb b/lib/ruby_ui/command/command_input.rb index 6f57e7e8..ee921cb0 100644 --- a/lib/ruby_ui/command/command_input.rb +++ b/lib/ruby_ui/command/command_input.rb @@ -40,8 +40,8 @@ def default_attrs { class: "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50", placeholder: @placeholder, - data_action: "input->rbui--command#filter keydown.down->rbui--command#handleKeydown keydown.up->rbui--command#handleKeydown keydown.enter->rbui--command#handleKeydown keydown.esc->rbui--command#dismiss", - data_rbui__command_target: "input", + data_action: "input->ruby_ui--command#filter keydown.down->ruby_ui--command#handleKeydown keydown.up->ruby_ui--command#handleKeydown keydown.enter->ruby_ui--command#handleKeydown keydown.esc->ruby_ui--command#dismiss", + data_ruby_ui__command_target: "input", autocomplete: "off", autocorrect: "off", spellcheck: false, diff --git a/lib/ruby_ui/command/command_item.rb b/lib/ruby_ui/command/command_item.rb index 09a391db..8b2c2aad 100644 --- a/lib/ruby_ui/command/command_item.rb +++ b/lib/ruby_ui/command/command_item.rb @@ -21,7 +21,7 @@ def default_attrs href: @href, role: "option", data: { - rbui__command_target: "item", + ruby_ui__command_target: "item", value: @value, text: @text } diff --git a/lib/ruby_ui/context_menu/context_menu.rb b/lib/ruby_ui/context_menu/context_menu.rb index 6edc481d..37a28c4d 100644 --- a/lib/ruby_ui/context_menu/context_menu.rb +++ b/lib/ruby_ui/context_menu/context_menu.rb @@ -17,7 +17,7 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--context-menu", + controller: "ruby_ui--context-menu", popover_options_value: @options.to_json } } diff --git a/lib/ruby_ui/context_menu/context_menu_content.rb b/lib/ruby_ui/context_menu/context_menu_content.rb index d9ff07e7..6ff51082 100644 --- a/lib/ruby_ui/context_menu/context_menu_content.rb +++ b/lib/ruby_ui/context_menu/context_menu_content.rb @@ -3,7 +3,7 @@ module RubyUI class ContextMenuContent < Base def view_template(&block) - all_template_tag(data: {rbui__context_menu_target: "content"}) do + all_template_tag(data: {ruby_ui__context_menu_target: "content"}) do div(**attrs, &block) end end diff --git a/lib/ruby_ui/context_menu/context_menu_item.rb b/lib/ruby_ui/context_menu/context_menu_item.rb index ff827c45..4c870fc3 100644 --- a/lib/ruby_ui/context_menu/context_menu_item.rb +++ b/lib/ruby_ui/context_menu/context_menu_item.rb @@ -56,8 +56,8 @@ def default_attrs "relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 pl-8", tabindex: "-1", data_orientation: "vertical", - data_action: "click->rbui--context-menu#close", - data_rbui__context_menu_target: "menuItem", + data_action: "click->ruby_ui--context-menu#close", + data_ruby_ui__context_menu_target: "menuItem", data_disabled: @disabled, disabled: @disabled } diff --git a/lib/ruby_ui/context_menu/context_menu_trigger.rb b/lib/ruby_ui/context_menu/context_menu_trigger.rb index 0bb0f04e..8aff0651 100644 --- a/lib/ruby_ui/context_menu/context_menu_trigger.rb +++ b/lib/ruby_ui/context_menu/context_menu_trigger.rb @@ -11,8 +11,8 @@ def view_template(&) def default_attrs { data: { - rbui__context_menu_target: "trigger", - action: "contextmenu->rbui--context-menu#handleContextMenu" + ruby_ui__context_menu_target: "trigger", + action: "contextmenu->ruby_ui--context-menu#handleContextMenu" } } end diff --git a/lib/ruby_ui/dialog/dialog.rb b/lib/ruby_ui/dialog/dialog.rb index c2444c8b..51a8d89b 100644 --- a/lib/ruby_ui/dialog/dialog.rb +++ b/lib/ruby_ui/dialog/dialog.rb @@ -16,8 +16,8 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--dialog", - rbui__dialog_open_value: @open + controller: "ruby_ui--dialog", + ruby_ui__dialog_open_value: @open } } end diff --git a/lib/ruby_ui/dialog/dialog_content.rb b/lib/ruby_ui/dialog/dialog_content.rb index 309d7b92..3b95f522 100644 --- a/lib/ruby_ui/dialog/dialog_content.rb +++ b/lib/ruby_ui/dialog/dialog_content.rb @@ -17,8 +17,8 @@ def initialize(size: :md, **attrs) end def view_template - all_template_tag(data: {rbui__dialog_target: "content"}) do - div(data_controller: "rbui--dialog") do + all_template_tag(data: {ruby_ui__dialog_target: "content"}) do + div(data_controller: "ruby_ui--dialog") do backdrop div(**attrs) do yield @@ -44,7 +44,7 @@ def close_button button( type: "button", class: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", - data_action: "click->rbui--dialog#dismiss" + data_action: "click->ruby_ui--dialog#dismiss" ) do svg( width: "15", @@ -69,7 +69,7 @@ def close_button def backdrop div( data_state: "open", - data_action: "click->rbui--dialog#dismiss esc->rbui--dialog#dismiss", + data_action: "click->ruby_ui--dialog#dismiss esc->ruby_ui--dialog#dismiss", class: "fixed pointer-events-auto inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0" ) diff --git a/lib/ruby_ui/dialog/dialog_trigger.rb b/lib/ruby_ui/dialog/dialog_trigger.rb index c558715e..ddc877da 100644 --- a/lib/ruby_ui/dialog/dialog_trigger.rb +++ b/lib/ruby_ui/dialog/dialog_trigger.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - action: "click->rbui--dialog#open" + action: "click->ruby_ui--dialog#open" }, class: "inline-block" } diff --git a/lib/ruby_ui/dropdown_menu/dropdown_menu.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu.rb index 0e44571f..e7e8bcda 100644 --- a/lib/ruby_ui/dropdown_menu/dropdown_menu.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu.rb @@ -16,9 +16,9 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--dropdown-menu", - action: "click@window->rbui--dropdown-menu#onClickOutside", - rbui__dropdown_menu_options_value: @options.to_json + controller: "ruby_ui--dropdown-menu", + action: "click@window->ruby_ui--dropdown-menu#onClickOutside", + ruby_ui__dropdown_menu_options_value: @options.to_json } } end diff --git a/lib/ruby_ui/dropdown_menu/dropdown_menu_content.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu_content.rb index b5a3ccce..44b8e16d 100644 --- a/lib/ruby_ui/dropdown_menu/dropdown_menu_content.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu_content.rb @@ -3,7 +3,7 @@ module RubyUI class DropdownMenuContent < Base def view_template(&block) - div(data: {rbui__dropdown_menu_target: "content"}, class: "hidden", style: "width: max-content; position: absolute; top: 0; left: 0;") do + div(data: {ruby_ui__dropdown_menu_target: "content"}, class: "hidden", style: "width: max-content; position: absolute; top: 0; left: 0;") do div(**attrs, &block) end end diff --git a/lib/ruby_ui/dropdown_menu/dropdown_menu_item.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu_item.rb index 56fd0d0b..88b8f24b 100644 --- a/lib/ruby_ui/dropdown_menu/dropdown_menu_item.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu_item.rb @@ -18,8 +18,8 @@ def default_attrs href: @href, role: "menuitem", class: "relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", - data_action: "click->rbui--dropdown-menu#close", - data_rbui__dropdown_menu_target: "menuItem", + data_action: "click->ruby_ui--dropdown-menu#close", + data_ruby_ui__dropdown_menu_target: "menuItem", tabindex: "-1", data_orientation: "vertical" } diff --git a/lib/ruby_ui/dropdown_menu/dropdown_menu_trigger.rb b/lib/ruby_ui/dropdown_menu/dropdown_menu_trigger.rb index ec312665..448deb88 100644 --- a/lib/ruby_ui/dropdown_menu/dropdown_menu_trigger.rb +++ b/lib/ruby_ui/dropdown_menu/dropdown_menu_trigger.rb @@ -10,7 +10,7 @@ def view_template(&) def default_attrs { - data: {rbui__dropdown_menu_target: "trigger", action: "click->rbui--dropdown-menu#toggle"}, + data: {ruby_ui__dropdown_menu_target: "trigger", action: "click->ruby_ui--dropdown-menu#toggle"}, class: "inline-block" } end diff --git a/lib/ruby_ui/form/form_field.rb b/lib/ruby_ui/form/form_field.rb index cf649553..0dfd6fb7 100644 --- a/lib/ruby_ui/form/form_field.rb +++ b/lib/ruby_ui/form/form_field.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--form-field" + controller: "ruby_ui--form-field" }, class: "space-y-2" } diff --git a/lib/ruby_ui/form/form_field_error.rb b/lib/ruby_ui/form/form_field_error.rb index 2b5d6c0e..0fceacd3 100644 --- a/lib/ruby_ui/form/form_field_error.rb +++ b/lib/ruby_ui/form/form_field_error.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - rbui__form_field_target: "error" + ruby_ui__form_field_target: "error" }, class: "text-sm font-medium text-destructive" } diff --git a/lib/ruby_ui/hover_card/hover_card.rb b/lib/ruby_ui/hover_card/hover_card.rb index 1fe6d3a5..a072e4f1 100644 --- a/lib/ruby_ui/hover_card/hover_card.rb +++ b/lib/ruby_ui/hover_card/hover_card.rb @@ -18,8 +18,8 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--hover-card", - rbui__hover_card_options_value: @options.to_json + controller: "ruby_ui--hover-card", + ruby_ui__hover_card_options_value: @options.to_json } } end diff --git a/lib/ruby_ui/hover_card/hover_card_content.rb b/lib/ruby_ui/hover_card/hover_card_content.rb index d9957c9f..068356cd 100644 --- a/lib/ruby_ui/hover_card/hover_card_content.rb +++ b/lib/ruby_ui/hover_card/hover_card_content.rb @@ -3,7 +3,7 @@ module RubyUI class HoverCardContent < Base def view_template(&block) - all_template_tag(data: {rbui__hover_card_target: "content"}) do + all_template_tag(data: {ruby_ui__hover_card_target: "content"}) do div(**attrs, &block) end end diff --git a/lib/ruby_ui/hover_card/hover_card_trigger.rb b/lib/ruby_ui/hover_card/hover_card_trigger.rb index ab7428f5..6b5238a5 100644 --- a/lib/ruby_ui/hover_card/hover_card_trigger.rb +++ b/lib/ruby_ui/hover_card/hover_card_trigger.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - rbui__hover_card_target: "trigger" + ruby_ui__hover_card_target: "trigger" }, class: "inline-block" } diff --git a/lib/ruby_ui/index.js b/lib/ruby_ui/index.js index 1f7c0942..6b80213e 100644 --- a/lib/ruby_ui/index.js +++ b/lib/ruby_ui/index.js @@ -34,31 +34,31 @@ function initialize(application) { }; // Register all controllers - registerIfNotExists("rbui--accordion", AccordionController); - registerIfNotExists("rbui--alert-dialog", AlertDialogController); - registerIfNotExists("rbui--calendar", CalendarController); - registerIfNotExists("rbui--calendar-input", CalendarInputController); - registerIfNotExists("rbui--collapsible", CollapsibleController); - registerIfNotExists("rbui--chart", ChartController); - registerIfNotExists("rbui--checkbox-group", CheckboxGroupController); - registerIfNotExists("rbui--clipboard", ClipboardController); - registerIfNotExists("rbui--combobox", ComboboxController); - registerIfNotExists("rbui--combobox-content", ComboboxContentController); - registerIfNotExists("rbui--combobox-item", ComboboxItemController); - registerIfNotExists("rbui--command", CommandController); - registerIfNotExists("rbui--context-menu", ContextMenuController); - registerIfNotExists("rbui--dialog", DialogController); - registerIfNotExists("rbui--dropdown-menu", DropdownMenuController); - registerIfNotExists("rbui--form-field", FormFieldController); - registerIfNotExists("rbui--hover-card", HoverCardController); - registerIfNotExists("rbui--popover", PopoverController); - registerIfNotExists("rbui--tabs", TabsController); - registerIfNotExists("rbui--theme-toggle", ThemeToggleController); - registerIfNotExists("rbui--tooltip", TooltipController); - registerIfNotExists("rbui--select", SelectController); - registerIfNotExists("rbui--select-item", SelectItemController); - registerIfNotExists("rbui--sheet", SheetController); - registerIfNotExists("rbui--sheet-content", SheetContentController); + registerIfNotExists("ruby_ui--accordion", AccordionController); + registerIfNotExists("ruby_ui--alert-dialog", AlertDialogController); + registerIfNotExists("ruby_ui--calendar", CalendarController); + registerIfNotExists("ruby_ui--calendar-input", CalendarInputController); + registerIfNotExists("ruby_ui--collapsible", CollapsibleController); + registerIfNotExists("ruby_ui--chart", ChartController); + registerIfNotExists("ruby_ui--checkbox-group", CheckboxGroupController); + registerIfNotExists("ruby_ui--clipboard", ClipboardController); + registerIfNotExists("ruby_ui--combobox", ComboboxController); + registerIfNotExists("ruby_ui--combobox-content", ComboboxContentController); + registerIfNotExists("ruby_ui--combobox-item", ComboboxItemController); + registerIfNotExists("ruby_ui--command", CommandController); + registerIfNotExists("ruby_ui--context-menu", ContextMenuController); + registerIfNotExists("ruby_ui--dialog", DialogController); + registerIfNotExists("ruby_ui--dropdown-menu", DropdownMenuController); + registerIfNotExists("ruby_ui--form-field", FormFieldController); + registerIfNotExists("ruby_ui--hover-card", HoverCardController); + registerIfNotExists("ruby_ui--popover", PopoverController); + registerIfNotExists("ruby_ui--tabs", TabsController); + registerIfNotExists("ruby_ui--theme-toggle", ThemeToggleController); + registerIfNotExists("ruby_ui--tooltip", TooltipController); + registerIfNotExists("ruby_ui--select", SelectController); + registerIfNotExists("ruby_ui--select-item", SelectItemController); + registerIfNotExists("ruby_ui--sheet", SheetController); + registerIfNotExists("ruby_ui--sheet-content", SheetContentController); } const RubyUI = { diff --git a/lib/ruby_ui/input/input.rb b/lib/ruby_ui/input/input.rb index 2fcd549f..4cc7f0ef 100644 --- a/lib/ruby_ui/input/input.rb +++ b/lib/ruby_ui/input/input.rb @@ -16,8 +16,8 @@ def view_template def default_attrs { data: { - rbui__form_field_target: "input", - action: "input->rbui--form-field#onInput invalid->rbui--form-field#onInvalid" + ruby_ui__form_field_target: "input", + action: "input->ruby_ui--form-field#onInput invalid->ruby_ui--form-field#onInvalid" }, class: "flex h-9 w-full rounded-md border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 border-border focus-visible:ring-ring placeholder:text-muted-foreground" } diff --git a/lib/ruby_ui/popover/popover.rb b/lib/ruby_ui/popover/popover.rb index b239fb43..ab0f3439 100644 --- a/lib/ruby_ui/popover/popover.rb +++ b/lib/ruby_ui/popover/popover.rb @@ -16,9 +16,9 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--popover", - rbui__popover_options_value: @options.to_json, - rbui__popover_trigger_value: @options[:trigger] || "hover" + controller: "ruby_ui--popover", + ruby_ui__popover_options_value: @options.to_json, + ruby_ui__popover_trigger_value: @options[:trigger] || "hover" } } end diff --git a/lib/ruby_ui/popover/popover_content.rb b/lib/ruby_ui/popover/popover_content.rb index 36dd4d85..8ba5aeda 100644 --- a/lib/ruby_ui/popover/popover_content.rb +++ b/lib/ruby_ui/popover/popover_content.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - rbui__popover_target: "content" + ruby_ui__popover_target: "content" }, class: [ "hidden z-50 rounded-md border bg-background p-1 text-foreground shadow-md outline-none", diff --git a/lib/ruby_ui/popover/popover_trigger.rb b/lib/ruby_ui/popover/popover_trigger.rb index 01981552..8644c1f7 100644 --- a/lib/ruby_ui/popover/popover_trigger.rb +++ b/lib/ruby_ui/popover/popover_trigger.rb @@ -11,7 +11,7 @@ def view_template(&) def default_attrs { data: { - rbui__popover_target: "trigger" + ruby_ui__popover_target: "trigger" }, class: "inline-block" } diff --git a/lib/ruby_ui/radio_button/radio_button.rb b/lib/ruby_ui/radio_button/radio_button.rb index 3584ebaa..2d93c86c 100644 --- a/lib/ruby_ui/radio_button/radio_button.rb +++ b/lib/ruby_ui/radio_button/radio_button.rb @@ -12,8 +12,8 @@ def default_attrs { type: "radio", data: { - rbui__form_field_target: "input", - action: "input->rbui--form-field#onInput invalid->rbui--form-field#onInvalid" + ruby_ui__form_field_target: "input", + action: "input->ruby_ui--form-field#onInput invalid->ruby_ui--form-field#onInvalid" }, class: "h-4 w-4 p-0 border-primary rounded-full flex-none" } diff --git a/lib/ruby_ui/railtie.rb b/lib/ruby_ui/railtie.rb index d70122e8..07a06a78 100644 --- a/lib/ruby_ui/railtie.rb +++ b/lib/ruby_ui/railtie.rb @@ -2,28 +2,28 @@ module RubyUI if defined?(Rails) class Railtie < ::Rails::Railtie generators do - require_relative "../generators/rbui/install/install_generator" + require_relative "../generators/ruby_ui/install/install_generator" config.app_generators do |g| g.templates.unshift File.expand_path("../templates", __FILE__) end - initializer "rbui.set_generator_namespace" do - Rails::Generators.namespace(RubyUI::Generators, as: "rbui") + initializer "ruby_ui.set_generator_namespace" do + Rails::Generators.namespace(RubyUI::Generators, as: "ruby_ui") end end # Add component loading config.to_prepare do # Define the path to the RubyUI components - rbui_components_path = Rails.root.join("app/components/rbui") + ruby_ui_components_path = Rails.root.join("app/components/ruby_ui") # Check if the RubyUI components directory exists - if Dir.exist?(rbui_components_path) + if Dir.exist?(ruby_ui_components_path) # Find all Ruby files in the RubyUI components directory and its subdirectories - Dir[rbui_components_path.join("**", "*.rb")].each do |file| + Dir[ruby_ui_components_path.join("**", "*.rb")].each do |file| # Get the relative path of the file from the RubyUI components directory - relative_path = Pathname.new(file).relative_path_from(rbui_components_path) + relative_path = Pathname.new(file).relative_path_from(ruby_ui_components_path) # Convert the file path to a component name # e.g., "form/input.rb" becomes ["Form", "Input"] diff --git a/lib/ruby_ui/select/select.rb b/lib/ruby_ui/select/select.rb index ad309a28..95ca50a0 100644 --- a/lib/ruby_ui/select/select.rb +++ b/lib/ruby_ui/select/select.rb @@ -11,10 +11,10 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--select", - rbui__select_open_value: "false", - action: "click@window->rbui--select#clickOutside", - rbui__select_rbui__select_item_outlet: ".item" + controller: "ruby_ui--select", + ruby_ui__select_open_value: "false", + action: "click@window->ruby_ui--select#clickOutside", + ruby_ui__select_ruby_ui__select_item_outlet: ".item" }, class: "group/select w-full relative" } diff --git a/lib/ruby_ui/select/select_content.rb b/lib/ruby_ui/select/select_content.rb index a694a81b..1756eea6 100644 --- a/lib/ruby_ui/select/select_content.rb +++ b/lib/ruby_ui/select/select_content.rb @@ -10,7 +10,7 @@ def initialize(**attrs) def view_template(&block) div(**attrs) do div( - class: "max-h-96 min-w-max overflow-auto rounded-md border bg-background p-1 text-foreground shadow-md animate-out group-data-[rbui--select-open-value=true]/select:animate-in fade-out-0 group-data-[rbui--select-open-value=true]/select:fade-in-0 zoom-out-95 group-data-[rbui--select-open-value=true]/select:zoom-in-95 slide-in-from-top-2", &block + class: "max-h-96 min-w-max overflow-auto rounded-md border bg-background p-1 text-foreground shadow-md animate-out group-data-[ruby_ui--select-open-value=true]/select:animate-in fade-out-0 group-data-[ruby_ui--select-open-value=true]/select:fade-in-0 zoom-out-95 group-data-[ruby_ui--select-open-value=true]/select:zoom-in-95 slide-in-from-top-2", &block ) end end @@ -23,7 +23,7 @@ def default_attrs role: "listbox", tabindex: "-1", data: { - rbui__select_target: "content" + ruby_ui__select_target: "content" }, class: "hidden w-full absolute top-0 left-0 z-50" } diff --git a/lib/ruby_ui/select/select_controller.js b/lib/ruby_ui/select/select_controller.js index c078d246..8a65fe26 100644 --- a/lib/ruby_ui/select/select_controller.js +++ b/lib/ruby_ui/select/select_controller.js @@ -4,7 +4,7 @@ import { computePosition, autoUpdate, offset } from "@floating-ui/dom"; export default class extends Controller { static targets = ["trigger", "content", "input", "value", "item"]; static values = { open: Boolean }; - static outlets = ["rbui--select-item"]; + static outlets = ["ruby_ui--select-item"]; constructor(...args) { super(...args); @@ -23,7 +23,9 @@ export default class extends Controller { selectItem(event) { event.preventDefault(); - this.rbuiSelectItemOutlets.forEach(item => item.handleSelectItem(event)); + this.ruby_uiSelectItemOutlets.forEach((item) => + item.handleSelectItem(event), + ); const oldValue = this.inputTarget.value; const newValue = event.target.dataset.value; @@ -48,7 +50,9 @@ export default class extends Controller { handleKeyDown(event) { event.preventDefault(); - const currentIndex = this.itemTargets.findIndex((item) => item.getAttribute("aria-current") === "true"); + const currentIndex = this.itemTargets.findIndex( + (item) => item.getAttribute("aria-current") === "true", + ); if (currentIndex + 1 < this.itemTargets.length) { this.itemTargets[currentIndex].removeAttribute("aria-current"); @@ -59,7 +63,9 @@ export default class extends Controller { handleKeyUp(event) { event.preventDefault(); - const currentIndex = this.itemTargets.findIndex((item) => item.getAttribute("aria-current") === "true"); + const currentIndex = this.itemTargets.findIndex( + (item) => item.getAttribute("aria-current") === "true", + ); if (currentIndex > 0) { this.itemTargets[currentIndex].removeAttribute("aria-current"); @@ -72,18 +78,25 @@ export default class extends Controller { this.closeContent(); } - setFocusAndCurrent() { - const selectedItem = this.itemTargets.find((item) => item.getAttribute("aria-selected") === "true"); + const selectedItem = this.itemTargets.find( + (item) => item.getAttribute("aria-selected") === "true", + ); if (selectedItem) { selectedItem.focus({ preventScroll: true }); selectedItem.setAttribute("aria-current", "true"); - this.triggerTarget.setAttribute("aria-activedescendant", selectedItem.getAttribute("id")); + this.triggerTarget.setAttribute( + "aria-activedescendant", + selectedItem.getAttribute("id"), + ); } else { this.itemTarget.focus({ preventScroll: true }); this.itemTarget.setAttribute("aria-current", "true"); - this.triggerTarget.setAttribute("aria-activedescendant", this.itemTarget.getAttribute("id")); + this.triggerTarget.setAttribute( + "aria-activedescendant", + this.itemTarget.getAttribute("id"), + ); } } @@ -107,7 +120,9 @@ export default class extends Controller { setFloatingElement() { this.cleanup = autoUpdate(this.triggerTarget, this.contentTarget, () => { - computePosition(this.triggerTarget, this.contentTarget, { middleware: [offset(4)] }).then(({ x, y }) => { + computePosition(this.triggerTarget, this.contentTarget, { + middleware: [offset(4)], + }).then(({ x, y }) => { Object.assign(this.contentTarget.style, { left: `${x}px`, top: `${y}px`, @@ -129,7 +144,10 @@ export default class extends Controller { const currentItem = this.itemTargets[currentIndex]; currentItem.focus({ preventScroll: true }); currentItem.setAttribute("aria-current", "true"); - this.triggerTarget.setAttribute("aria-activedescendant", currentItem.getAttribute("id")); + this.triggerTarget.setAttribute( + "aria-activedescendant", + currentItem.getAttribute("id"), + ); } closeContent() { diff --git a/lib/ruby_ui/select/select_input.rb b/lib/ruby_ui/select/select_input.rb index 230d272f..2a22fb81 100644 --- a/lib/ruby_ui/select/select_input.rb +++ b/lib/ruby_ui/select/select_input.rb @@ -12,9 +12,9 @@ def default_attrs { class: "hidden", data: { - rbui__select_target: "input", - rbui__form_field_target: "input", - action: "change->rbui--form-field#onChange invalid->rbui--form-field#onInvalid" + ruby_ui__select_target: "input", + ruby_ui__form_field_target: "input", + action: "change->ruby_ui--form-field#onChange invalid->ruby_ui--form-field#onInvalid" } } end diff --git a/lib/ruby_ui/select/select_item.rb b/lib/ruby_ui/select/select_item.rb index 99870eb8..fa49bbe8 100644 --- a/lib/ruby_ui/select/select_item.rb +++ b/lib/ruby_ui/select/select_item.rb @@ -39,9 +39,9 @@ def default_attrs tabindex: "0", class: "item group relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", data: { - controller: "rbui--select-item", - action: "click->rbui--select#selectItem keydown.enter->rbui--select#selectItem keydown.down->rbui--select#handleKeyDown keydown.up->rbui--select#handleKeyUp keydown.esc->rbui--select#handleEsc", - rbui__select_target: "item" + controller: "ruby_ui--select-item", + action: "click->ruby_ui--select#selectItem keydown.enter->ruby_ui--select#selectItem keydown.down->ruby_ui--select#handleKeyDown keydown.up->ruby_ui--select#handleKeyUp keydown.esc->ruby_ui--select#handleEsc", + ruby_ui__select_target: "item" }, data_value: @value, data_orientation: "vertical", diff --git a/lib/ruby_ui/select/select_trigger.rb b/lib/ruby_ui/select/select_trigger.rb index 28f442ff..549775e2 100644 --- a/lib/ruby_ui/select/select_trigger.rb +++ b/lib/ruby_ui/select/select_trigger.rb @@ -34,8 +34,8 @@ def icon def default_attrs { data: { - action: "rbui--select#onClick", - rbui__select_target: "trigger" + action: "ruby_ui--select#onClick", + ruby_ui__select_target: "trigger" }, type: "button", role: "combobox", diff --git a/lib/ruby_ui/select/select_value.rb b/lib/ruby_ui/select/select_value.rb index ad8acf37..0ca8d02d 100644 --- a/lib/ruby_ui/select/select_value.rb +++ b/lib/ruby_ui/select/select_value.rb @@ -18,7 +18,7 @@ def view_template(&block) def default_attrs { data: { - rbui__select_target: "value" + ruby_ui__select_target: "value" }, class: "pointer-events-none" } diff --git a/lib/ruby_ui/sheet/sheet.rb b/lib/ruby_ui/sheet/sheet.rb index 640aba67..cae400bc 100644 --- a/lib/ruby_ui/sheet/sheet.rb +++ b/lib/ruby_ui/sheet/sheet.rb @@ -10,7 +10,7 @@ def view_template(&) def default_attrs { - data: {controller: "rbui--sheet"} + data: {controller: "ruby_ui--sheet"} } end end diff --git a/lib/ruby_ui/sheet/sheet_content.rb b/lib/ruby_ui/sheet/sheet_content.rb index a288814f..440b70b6 100644 --- a/lib/ruby_ui/sheet/sheet_content.rb +++ b/lib/ruby_ui/sheet/sheet_content.rb @@ -16,8 +16,8 @@ def initialize(side: :right, **attrs) end def view_template(&block) - all_template_tag(data: {rbui__sheet_target: "content"}) do - div(data: {controller: "rbui--sheet-content"}) do + all_template_tag(data: {ruby_ui__sheet_target: "content"}) do + div(data: {controller: "ruby_ui--sheet-content"}) do backdrop div(**attrs) do block&.call @@ -43,7 +43,7 @@ def close_button button( type: "button", class: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", - data_action: "click->rbui--sheet-content#close" + data_action: "click->ruby_ui--sheet-content#close" ) do svg( width: "15", @@ -68,7 +68,7 @@ def close_button def backdrop div( data_state: "open", - data_action: "click->rbui--sheet-content#close", + data_action: "click->ruby_ui--sheet-content#close", class: "fixed pointer-events-auto inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0" ) diff --git a/lib/ruby_ui/sheet/sheet_trigger.rb b/lib/ruby_ui/sheet/sheet_trigger.rb index 4348796a..32419ae2 100644 --- a/lib/ruby_ui/sheet/sheet_trigger.rb +++ b/lib/ruby_ui/sheet/sheet_trigger.rb @@ -10,7 +10,7 @@ def view_template(&) def default_attrs { - data: {action: "click->rbui--sheet#open"} + data: {action: "click->ruby_ui--sheet#open"} } end end diff --git a/lib/ruby_ui/tabs/tabs.rb b/lib/ruby_ui/tabs/tabs.rb index 21748126..37e37adf 100644 --- a/lib/ruby_ui/tabs/tabs.rb +++ b/lib/ruby_ui/tabs/tabs.rb @@ -16,8 +16,8 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--tabs", - rbui__tabs_active_value: @default + controller: "ruby_ui--tabs", + ruby_ui__tabs_active_value: @default } } end diff --git a/lib/ruby_ui/tabs/tabs_content.rb b/lib/ruby_ui/tabs/tabs_content.rb index fc7483d3..c27b7072 100644 --- a/lib/ruby_ui/tabs/tabs_content.rb +++ b/lib/ruby_ui/tabs/tabs_content.rb @@ -16,7 +16,7 @@ def view_template(&) def default_attrs { data: { - rbui__tabs_target: :content, + ruby_ui__tabs_target: :content, value: @value }, class: "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hidden" diff --git a/lib/ruby_ui/tabs/tabs_controller.js b/lib/ruby_ui/tabs/tabs_controller.js index 26cfa1af..995df447 100644 --- a/lib/ruby_ui/tabs/tabs_controller.js +++ b/lib/ruby_ui/tabs/tabs_controller.js @@ -1,40 +1,45 @@ -import { Controller } from "@hotwired/stimulus" +import { Controller } from "@hotwired/stimulus"; -// Connects to data-controller="rbui--tabs" +// Connects to data-controller="ruby_ui--tabs" export default class extends Controller { - static targets = ["trigger", "content"] - static values = { active: String } + static targets = ["trigger", "content"]; + static values = { active: String }; connect() { if (!this.hasActiveValue && this.triggerTargets.length > 0) { - this.activeValue = this.triggerTargets[0].dataset.value + this.activeValue = this.triggerTargets[0].dataset.value; } } show(e) { - this.activeValue = e.currentTarget.dataset.value + this.activeValue = e.currentTarget.dataset.value; } activeValueChanged(currentValue, previousValue) { - if (currentValue == '' || currentValue == previousValue) return + if (currentValue == "" || currentValue == previousValue) return; this.contentTargets.forEach((el) => { - el.classList.add("hidden") - }) + el.classList.add("hidden"); + }); this.triggerTargets.forEach((el) => { - el.dataset.state = "inactive" - }) + el.dataset.state = "inactive"; + }); - this.activeContentTarget() && this.activeContentTarget().classList.remove("hidden") - this.activeTriggerTarget().dataset.state = "active" + this.activeContentTarget() && + this.activeContentTarget().classList.remove("hidden"); + this.activeTriggerTarget().dataset.state = "active"; } activeTriggerTarget() { - return this.triggerTargets.find((el) => el.dataset.value == this.activeValue) + return this.triggerTargets.find( + (el) => el.dataset.value == this.activeValue, + ); } activeContentTarget() { - return this.contentTargets.find((el) => el.dataset.value == this.activeValue) + return this.contentTargets.find( + (el) => el.dataset.value == this.activeValue, + ); } } diff --git a/lib/ruby_ui/tabs/tabs_trigger.rb b/lib/ruby_ui/tabs/tabs_trigger.rb index c6ca2d97..64ddd904 100644 --- a/lib/ruby_ui/tabs/tabs_trigger.rb +++ b/lib/ruby_ui/tabs/tabs_trigger.rb @@ -17,8 +17,8 @@ def default_attrs { type: :button, data: { - rbui__tabs_target: "trigger", - action: "click->rbui--tabs#show", + ruby_ui__tabs_target: "trigger", + action: "click->ruby_ui--tabs#show", value: @value }, class: "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow" diff --git a/lib/ruby_ui/textarea/textarea.rb b/lib/ruby_ui/textarea/textarea.rb index dfa09bf4..3fa2ef13 100644 --- a/lib/ruby_ui/textarea/textarea.rb +++ b/lib/ruby_ui/textarea/textarea.rb @@ -16,8 +16,8 @@ def view_template(&) def default_attrs { data: { - rbui__form_field_target: "input", - action: "input->rbui--form-field#onInput invalid->rbui--form-field#onInvalid" + ruby_ui__form_field_target: "input", + action: "input->ruby_ui--form-field#onInput invalid->ruby_ui--form-field#onInvalid" }, class: "flex w-full rounded-md border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 border-border focus-visible:ring-ring placeholder:text-muted-foreground" } diff --git a/lib/ruby_ui/theme_toggle/theme_toggle.rb b/lib/ruby_ui/theme_toggle/theme_toggle.rb index fecadf4e..a3a4b15f 100644 --- a/lib/ruby_ui/theme_toggle/theme_toggle.rb +++ b/lib/ruby_ui/theme_toggle/theme_toggle.rb @@ -20,21 +20,21 @@ def dark_mode(**user_attrs, &) def default_attrs { - data: {controller: "rbui--theme-toggle"} + data: {controller: "ruby_ui--theme-toggle"} } end def default_light_attrs { class: "dark:hidden", - data: {action: "click->rbui--theme-toggle#setDarkTheme"} + data: {action: "click->ruby_ui--theme-toggle#setDarkTheme"} } end def default_dark_attrs { class: "hidden dark:inline-block", - data: {action: "click->rbui--theme-toggle#setLightTheme"} + data: {action: "click->ruby_ui--theme-toggle#setLightTheme"} } end end diff --git a/lib/ruby_ui/tooltip/tooltip.rb b/lib/ruby_ui/tooltip/tooltip.rb index 6c9d0e82..83de01cd 100644 --- a/lib/ruby_ui/tooltip/tooltip.rb +++ b/lib/ruby_ui/tooltip/tooltip.rb @@ -16,8 +16,8 @@ def view_template(&) def default_attrs { data: { - controller: "rbui--tooltip", - rbui__tooltip_placement_value: @placement + controller: "ruby_ui--tooltip", + ruby_ui__tooltip_placement_value: @placement }, class: "group" } diff --git a/lib/ruby_ui/tooltip/tooltip_content.rb b/lib/ruby_ui/tooltip/tooltip_content.rb index da83f5d8..6cdc0353 100644 --- a/lib/ruby_ui/tooltip/tooltip_content.rb +++ b/lib/ruby_ui/tooltip/tooltip_content.rb @@ -17,9 +17,9 @@ def default_attrs { id: @id, data: { - rbui__tooltip_target: "content" + ruby_ui__tooltip_target: "content" }, - class: "invisible peer-hover:visible peer-focus:visible w-max absolute top-0 left-0 z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md peer-focus:zoom-in-95 animate-out fade-out-0 zoom-out-95 peer-hover:animate-in peer-focus:animate-in peer-hover:fade-in-0 peer-focus:fade-in-0 peer-hover:zoom-in-95 group-data-[rbui--tooltip-placement-value=bottom]:slide-in-from-top-2 group-data-[rbui--tooltip-placement-value=left]:slide-in-from-right-2 group-data-[rbui--tooltip-placement-value=right]:slide-in-from-left-2 group-data-[rbui--tooltip-placement-value=top]:slide-in-from-bottom-2 delay-500" + class: "invisible peer-hover:visible peer-focus:visible w-max absolute top-0 left-0 z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md peer-focus:zoom-in-95 animate-out fade-out-0 zoom-out-95 peer-hover:animate-in peer-focus:animate-in peer-hover:fade-in-0 peer-focus:fade-in-0 peer-hover:zoom-in-95 group-data-[ruby_ui--tooltip-placement-value=bottom]:slide-in-from-top-2 group-data-[ruby_ui--tooltip-placement-value=left]:slide-in-from-right-2 group-data-[ruby_ui--tooltip-placement-value=right]:slide-in-from-left-2 group-data-[ruby_ui--tooltip-placement-value=top]:slide-in-from-bottom-2 delay-500" } end end diff --git a/lib/ruby_ui/tooltip/tooltip_trigger.rb b/lib/ruby_ui/tooltip/tooltip_trigger.rb index aab6583e..a535e942 100644 --- a/lib/ruby_ui/tooltip/tooltip_trigger.rb +++ b/lib/ruby_ui/tooltip/tooltip_trigger.rb @@ -10,7 +10,7 @@ def view_template(&) def default_attrs { - data: {rbui__tooltip_target: "trigger"}, + data: {ruby_ui__tooltip_target: "trigger"}, variant: :outline, class: "peer" } diff --git a/package.json b/package.json index 01e37a0e..95b2236f 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,14 @@ { "name": "ruby_ui_js", "version": "1.0.0-alpha.4", - "main": "lib/rbui/index.js", - "description": "Stimulus controllers for RbUI Component Library", - "homepage": "https://rbui.dev", + "main": "lib/ruby_ui/index.js", + "description": "Stimulus controllers for ruby_ui Component Library", + "homepage": "https://ruby_ui.dev", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [ - "RbUI", + "ruby_ui", "Stimulus", "StimulusJS", "StimulusControllers", @@ -18,7 +18,7 @@ ], "repository": { "type": "git", - "url": "https://github.com/rbui-hq/rbui.git" + "url": "https://github.com/ruby_ui-hq/ruby_ui.git" }, "author": "George Kettle", "license": "ISC", diff --git a/ruby_ui.gemspec b/ruby_ui.gemspec index aba65bb6..3e3747fe 100644 --- a/ruby_ui.gemspec +++ b/ruby_ui.gemspec @@ -1,4 +1,4 @@ -require_relative "lib/rbui/version" +require_relative "lib/ruby_ui/version" Gem::Specification.new do |s| s.name = "ruby_ui" diff --git a/test/ruby_ui/accordion_test.rb b/test/ruby_ui/accordion_test.rb index df18fe7f..38a8ac0f 100644 --- a/test/ruby_ui/accordion_test.rb +++ b/test/ruby_ui/accordion_test.rb @@ -15,7 +15,7 @@ def test_render_with_default_items end end - assert_match(/
rbui--dialog#dismiss"}) { "Cancel" } + RubyUI.Button(variant: :outline, data: {action: "click->ruby_ui--dialog#dismiss"}) { "Cancel" } RubyUI.Button { "Save" } end end diff --git a/test/ruby_ui/sheet_test.rb b/test/ruby_ui/sheet_test.rb index 8f9a965a..8d66e109 100644 --- a/test/ruby_ui/sheet_test.rb +++ b/test/ruby_ui/sheet_test.rb @@ -22,7 +22,7 @@ def test_render_with_all_items RubyUI.Input(placeholder: "joel@drapper.me") RubyUI.SheetFooter do - RubyUI.Button(variant: :outline, data: {action: "click->rbui--sheet-content#close"}) { "Cancel" } + RubyUI.Button(variant: :outline, data: {action: "click->ruby_ui--sheet-content#close"}) { "Cancel" } RubyUI.Button(type: "submit") { "Save" } end end From f8b606293297b716403f527e1e4cc7044d15745c Mon Sep 17 00:00:00 2001 From: Seth Horsley Date: Tue, 5 Nov 2024 07:03:28 +0100 Subject: [PATCH 3/4] fix rails version for phlex 2 --- lib/generators/ruby_ui/install/install_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/ruby_ui/install/install_generator.rb b/lib/generators/ruby_ui/install/install_generator.rb index 117c2182..f7b4acac 100644 --- a/lib/generators/ruby_ui/install/install_generator.rb +++ b/lib/generators/ruby_ui/install/install_generator.rb @@ -22,7 +22,7 @@ def add_phlex_rails say "Phlex Rails is already installed", :green else say "Adding Phlex Rails" - run "bundle add phlex-rails --version=\"~> 1.2.1\"" + run "bundle add phlex-rails --version=\"~> 2.0.0.beta2\"" end say "Adding tailwind_merge" From 2ba71880d6ecedc82050873fa80021a33cd7b224 Mon Sep 17 00:00:00 2001 From: Cirdes Henrique Date: Wed, 6 Nov 2024 15:07:41 -0300 Subject: [PATCH 4/4] fix checkbox --- lib/ruby_ui/checkbox/checkbox.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ruby_ui/checkbox/checkbox.rb b/lib/ruby_ui/checkbox/checkbox.rb index 95be53af..1f464755 100644 --- a/lib/ruby_ui/checkbox/checkbox.rb +++ b/lib/ruby_ui/checkbox/checkbox.rb @@ -14,7 +14,7 @@ def default_attrs data: { ruby_ui__form_field_target: "input", ruby_ui__checkbox_group_target: "checkbox", - action: "change->ruby_ui--checkbox-group#onChange change->ruby_ui--form-field#onInput change->ruby_ui--checkbox-group#onChange" + action: "change->ruby_ui--checkbox-group#onChange change->ruby_ui--form-field#onInput invalid->ruby_ui--form-field#onInvalid" }, class: "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 accent-primary" }