From 44a7d87cb1f5df953b6c14c16c59e2e4ead1bcb9 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Mon, 20 Feb 2023 03:20:59 +0100 Subject: [PATCH] Rename JSX files with proper `.jsx` extension (#23733) --- .eslintrc.js | 5 ++++- .github/workflows/lint-js.yml | 2 ++ .github/workflows/test-js.yml | 2 ++ ...st_emoji-test.js.snap => autosuggest_emoji-test.jsx.snap} | 0 .../{avatar-test.js.snap => avatar-test.jsx.snap} | 0 ...tar_overlay-test.js.snap => avatar_overlay-test.jsx.snap} | 0 .../{button-test.js.snap => button-test.jsx.snap} | 0 ...{display_name-test.js.snap => display_name-test.jsx.snap} | 0 ...{autosuggest_emoji-test.js => autosuggest_emoji-test.jsx} | 0 .../components/__tests__/{avatar-test.js => avatar-test.jsx} | 0 .../{avatar_overlay-test.js => avatar_overlay-test.jsx} | 0 .../components/__tests__/{button-test.js => button-test.jsx} | 0 .../{display_name-test.js => display_name-test.jsx} | 0 .../mastodon/components/{account.js => account.jsx} | 0 .../mastodon/components/admin/{Counter.js => Counter.jsx} | 0 .../components/admin/{Dimension.js => Dimension.jsx} | 0 .../{ReportReasonSelector.js => ReportReasonSelector.jsx} | 0 .../components/admin/{Retention.js => Retention.jsx} | 0 .../mastodon/components/admin/{Trends.js => Trends.jsx} | 0 .../components/{animated_number.js => animated_number.jsx} | 0 .../components/{attachment_list.js => attachment_list.jsx} | 0 .../{autosuggest_emoji.js => autosuggest_emoji.jsx} | 0 .../{autosuggest_hashtag.js => autosuggest_hashtag.jsx} | 0 .../{autosuggest_input.js => autosuggest_input.jsx} | 0 .../{autosuggest_textarea.js => autosuggest_textarea.jsx} | 0 app/javascript/mastodon/components/{avatar.js => avatar.jsx} | 0 .../components/{avatar_composite.js => avatar_composite.jsx} | 0 .../components/{avatar_overlay.js => avatar_overlay.jsx} | 0 .../mastodon/components/{blurhash.js => blurhash.jsx} | 0 app/javascript/mastodon/components/{button.js => button.jsx} | 0 app/javascript/mastodon/components/{check.js => check.jsx} | 0 app/javascript/mastodon/components/{column.js => column.jsx} | 0 .../{column_back_button.js => column_back_button.jsx} | 0 ...olumn_back_button_slim.js => column_back_button_slim.jsx} | 0 .../components/{column_header.js => column_header.jsx} | 0 .../components/{common_counter.js => common_counter.jsx} | 0 .../{dismissable_banner.js => dismissable_banner.jsx} | 0 .../components/{display_name.js => display_name.jsx} | 0 app/javascript/mastodon/components/{domain.js => domain.jsx} | 0 .../components/{dropdown_menu.js => dropdown_menu.jsx} | 0 .../components/edited_timestamp/{index.js => index.jsx} | 0 .../components/{error_boundary.js => error_boundary.jsx} | 0 app/javascript/mastodon/components/{gifv.js => gifv.jsx} | 0 .../mastodon/components/{hashtag.js => hashtag.jsx} | 0 app/javascript/mastodon/components/{icon.js => icon.jsx} | 0 .../mastodon/components/{icon_button.js => icon_button.jsx} | 0 .../components/{icon_with_badge.js => icon_with_badge.jsx} | 0 app/javascript/mastodon/components/{image.js => image.jsx} | 0 .../components/{inline_account.js => inline_account.jsx} | 0 ...observer_article.js => intersection_observer_article.jsx} | 0 .../mastodon/components/{load_gap.js => load_gap.jsx} | 0 .../mastodon/components/{load_more.js => load_more.jsx} | 0 .../components/{load_pending.js => load_pending.jsx} | 0 .../{loading_indicator.js => loading_indicator.jsx} | 0 app/javascript/mastodon/components/{logo.js => logo.jsx} | 0 .../{media_attachments.js => media_attachments.jsx} | 0 .../components/{media_gallery.js => media_gallery.jsx} | 0 .../{missing_indicator.js => missing_indicator.jsx} | 0 .../mastodon/components/{modal_root.js => modal_root.jsx} | 0 .../{navigation_portal.js => navigation_portal.jsx} | 0 ...ot_signed_in_indicator.js => not_signed_in_indicator.jsx} | 0 ...ure_placeholder.js => picture_in_picture_placeholder.jsx} | 0 app/javascript/mastodon/components/{poll.js => poll.jsx} | 0 .../components/{radio_button.js => radio_button.jsx} | 0 ...{regeneration_indicator.js => regeneration_indicator.jsx} | 0 .../{relative_timestamp.js => relative_timestamp.jsx} | 0 .../components/{scrollable_list.js => scrollable_list.jsx} | 0 .../components/{server_banner.js => server_banner.jsx} | 0 .../components/{short_number.js => short_number.jsx} | 0 .../mastodon/components/{skeleton.js => skeleton.jsx} | 0 app/javascript/mastodon/components/{status.js => status.jsx} | 0 .../{status_action_bar.js => status_action_bar.jsx} | 0 .../components/{status_content.js => status_content.jsx} | 0 .../mastodon/components/{status_list.js => status_list.jsx} | 0 .../components/{timeline_hint.js => timeline_hint.jsx} | 0 .../{account_container.js => account_container.jsx} | 0 .../containers/{admin_component.js => admin_component.jsx} | 0 .../{compose_container.js => compose_container.jsx} | 0 .../containers/{domain_container.js => domain_container.jsx} | 0 .../mastodon/containers/{mastodon.js => mastodon.jsx} | 0 .../containers/{media_container.js => media_container.jsx} | 0 .../containers/{status_container.js => status_container.jsx} | 0 .../mastodon/features/about/{index.js => index.jsx} | 0 .../account/components/{account_note.js => account_note.jsx} | 0 .../components/{featured_tags.js => featured_tags.jsx} | 0 .../{follow_request_note.js => follow_request_note.jsx} | 0 .../features/account/components/{header.js => header.jsx} | 0 .../features/account/{navigation.js => navigation.jsx} | 0 .../components/{media_item.js => media_item.jsx} | 0 .../features/account_gallery/{index.js => index.jsx} | 0 .../account_timeline/components/{header.js => header.jsx} | 0 .../{limited_account_hint.js => limited_account_hint.jsx} | 0 .../components/{moved_note.js => moved_note.jsx} | 0 .../containers/{header_container.js => header_container.jsx} | 0 .../features/account_timeline/{index.js => index.jsx} | 0 .../mastodon/features/audio/{index.js => index.jsx} | 0 .../mastodon/features/blocks/{index.js => index.jsx} | 0 .../features/bookmarked_statuses/{index.js => index.jsx} | 0 .../closed_registrations_modal/{index.js => index.jsx} | 0 .../components/{column_settings.js => column_settings.jsx} | 0 .../features/community_timeline/{index.js => index.jsx} | 0 .../compose/components/{action_bar.js => action_bar.jsx} | 0 .../{autosuggest_account.js => autosuggest_account.jsx} | 0 .../{character_counter.js => character_counter.jsx} | 0 .../compose/components/{compose_form.js => compose_form.jsx} | 0 .../{emoji_picker_dropdown.js => emoji_picker_dropdown.jsx} | 0 .../{language_dropdown.js => language_dropdown.jsx} | 0 .../components/{navigation_bar.js => navigation_bar.jsx} | 0 .../compose/components/{poll_button.js => poll_button.jsx} | 0 .../compose/components/{poll_form.js => poll_form.jsx} | 0 .../components/{privacy_dropdown.js => privacy_dropdown.jsx} | 0 .../components/{reply_indicator.js => reply_indicator.jsx} | 0 .../features/compose/components/{search.js => search.jsx} | 0 .../components/{search_results.js => search_results.jsx} | 0 .../components/{text_icon_button.js => text_icon_button.jsx} | 0 .../features/compose/components/{upload.js => upload.jsx} | 0 .../components/{upload_button.js => upload_button.jsx} | 0 .../compose/components/{upload_form.js => upload_form.jsx} | 0 .../components/{upload_progress.js => upload_progress.jsx} | 0 .../features/compose/components/{warning.js => warning.jsx} | 0 ...ve_button_container.js => sensitive_button_container.jsx} | 0 .../{warning_container.js => warning_container.jsx} | 0 .../mastodon/features/compose/{index.js => index.jsx} | 0 .../components/{conversation.js => conversation.jsx} | 0 .../{conversations_list.js => conversations_list.jsx} | 0 .../features/direct_timeline/{index.js => index.jsx} | 0 .../components/{account_card.js => account_card.jsx} | 0 .../mastodon/features/directory/{index.js => index.jsx} | 0 .../mastodon/features/domain_blocks/{index.js => index.jsx} | 0 .../features/explore/components/{story.js => story.jsx} | 0 .../mastodon/features/explore/{index.js => index.jsx} | 0 .../mastodon/features/explore/{links.js => links.jsx} | 0 .../mastodon/features/explore/{results.js => results.jsx} | 0 .../mastodon/features/explore/{statuses.js => statuses.jsx} | 0 .../features/explore/{suggestions.js => suggestions.jsx} | 0 .../mastodon/features/explore/{tags.js => tags.jsx} | 0 .../features/favourited_statuses/{index.js => index.jsx} | 0 .../mastodon/features/favourites/{index.js => index.jsx} | 0 .../filters/{added_to_filter.js => added_to_filter.jsx} | 0 .../features/filters/{select_filter.js => select_filter.jsx} | 0 .../components/{account.js => account.jsx} | 0 .../features/follow_recommendations/{index.js => index.jsx} | 0 .../{account_authorize.js => account_authorize.jsx} | 0 .../features/follow_requests/{index.js => index.jsx} | 0 .../mastodon/features/followed_tags/{index.js => index.jsx} | 0 .../mastodon/features/followers/{index.js => index.jsx} | 0 .../mastodon/features/following/{index.js => index.jsx} | 0 .../features/generic_not_found/{index.js => index.jsx} | 0 .../components/{announcements.js => announcements.jsx} | 0 .../getting_started/components/{trends.js => trends.jsx} | 0 .../features/getting_started/{index.js => index.jsx} | 0 .../components/{column_settings.js => column_settings.jsx} | 0 .../features/hashtag_timeline/{index.js => index.jsx} | 0 .../components/{column_settings.js => column_settings.jsx} | 0 .../mastodon/features/home_timeline/{index.js => index.jsx} | 0 .../features/interaction_modal/{index.js => index.jsx} | 0 .../features/keyboard_shortcuts/{index.js => index.jsx} | 0 .../list_adder/components/{account.js => account.jsx} | 0 .../features/list_adder/components/{list.js => list.jsx} | 0 .../mastodon/features/list_adder/{index.js => index.jsx} | 0 .../list_editor/components/{account.js => account.jsx} | 0 .../components/{edit_list_form.js => edit_list_form.jsx} | 0 .../list_editor/components/{search.js => search.jsx} | 0 .../mastodon/features/list_editor/{index.js => index.jsx} | 0 .../mastodon/features/list_timeline/{index.js => index.jsx} | 0 .../lists/components/{new_list_form.js => new_list_form.jsx} | 0 .../mastodon/features/lists/{index.js => index.jsx} | 0 .../mastodon/features/mutes/{index.js => index.jsx} | 0 .../{clear_column_button.js => clear_column_button.jsx} | 0 .../components/{column_settings.js => column_settings.jsx} | 0 .../components/{filter_bar.js => filter_bar.jsx} | 0 .../components/{follow_request.js => follow_request.jsx} | 0 ...rant_permission_button.js => grant_permission_button.jsx} | 0 .../components/{notification.js => notification.jsx} | 0 ...mission_banner.js => notifications_permission_banner.jsx} | 0 .../notifications/components/{report.js => report.jsx} | 0 .../components/{setting_toggle.js => setting_toggle.jsx} | 0 .../mastodon/features/notifications/{index.js => index.jsx} | 0 .../picture_in_picture/components/{footer.js => footer.jsx} | 0 .../picture_in_picture/components/{header.js => header.jsx} | 0 .../features/picture_in_picture/{index.js => index.jsx} | 0 .../features/pinned_statuses/{index.js => index.jsx} | 0 .../mastodon/features/privacy_policy/{index.js => index.jsx} | 0 .../components/{column_settings.js => column_settings.jsx} | 0 .../features/public_timeline/{index.js => index.jsx} | 0 .../mastodon/features/reblogs/{index.js => index.jsx} | 0 .../mastodon/features/report/{category.js => category.jsx} | 0 .../mastodon/features/report/{comment.js => comment.jsx} | 0 .../features/report/components/{option.js => option.jsx} | 0 .../components/{status_check_box.js => status_check_box.jsx} | 0 .../mastodon/features/report/{rules.js => rules.jsx} | 0 .../mastodon/features/report/{statuses.js => statuses.jsx} | 0 .../mastodon/features/report/{thanks.js => thanks.jsx} | 0 .../features/standalone/compose/{index.js => index.jsx} | 0 .../status/components/{action_bar.js => action_bar.jsx} | 0 .../features/status/components/{card.js => card.jsx} | 0 .../components/{detailed_status.js => detailed_status.jsx} | 0 .../mastodon/features/status/{index.js => index.jsx} | 0 .../subscribed_languages_modal/{index.js => index.jsx} | 0 .../components/__tests__/{column-test.js => column-test.jsx} | 0 .../ui/components/{actions_modal.js => actions_modal.jsx} | 0 .../ui/components/{audio_modal.js => audio_modal.jsx} | 0 .../ui/components/{block_modal.js => block_modal.jsx} | 0 .../ui/components/{boost_modal.js => boost_modal.jsx} | 0 .../features/ui/components/{bundle.js => bundle.jsx} | 0 .../{bundle_column_error.js => bundle_column_error.jsx} | 0 .../{bundle_modal_error.js => bundle_modal_error.jsx} | 0 .../features/ui/components/{column.js => column.jsx} | 0 .../ui/components/{column_header.js => column_header.jsx} | 0 .../ui/components/{column_link.js => column_link.jsx} | 0 .../ui/components/{column_loading.js => column_loading.jsx} | 0 .../{column_subheading.js => column_subheading.jsx} | 0 .../ui/components/{columns_area.js => columns_area.jsx} | 0 .../{compare_history_modal.js => compare_history_modal.jsx} | 0 .../ui/components/{compose_panel.js => compose_panel.jsx} | 0 .../{confirmation_modal.js => confirmation_modal.jsx} | 0 ...isabled_account_banner.js => disabled_account_banner.jsx} | 0 .../ui/components/{drawer_loading.js => drawer_loading.jsx} | 0 .../ui/components/{embed_modal.js => embed_modal.jsx} | 0 .../ui/components/{filter_modal.js => filter_modal.jsx} | 0 .../{focal_point_modal.js => focal_point_modal.jsx} | 0 ...quests_column_link.js => follow_requests_column_link.jsx} | 0 .../features/ui/components/{header.js => header.jsx} | 0 .../ui/components/{image_loader.js => image_loader.jsx} | 0 .../ui/components/{image_modal.js => image_modal.jsx} | 0 .../ui/components/{link_footer.js => link_footer.jsx} | 0 .../features/ui/components/{list_panel.js => list_panel.jsx} | 0 .../ui/components/{media_modal.js => media_modal.jsx} | 0 .../ui/components/{modal_loading.js => modal_loading.jsx} | 0 .../features/ui/components/{modal_root.js => modal_root.jsx} | 0 .../features/ui/components/{mute_modal.js => mute_modal.jsx} | 0 .../components/{navigation_panel.js => navigation_panel.jsx} | 0 .../ui/components/{report_modal.js => report_modal.jsx} | 0 .../ui/components/{sign_in_banner.js => sign_in_banner.jsx} | 0 .../ui/components/{upload_area.js => upload_area.jsx} | 0 .../ui/components/{video_modal.js => video_modal.jsx} | 0 .../ui/components/{zoomable_image.js => zoomable_image.jsx} | 0 app/javascript/mastodon/features/ui/{index.js => index.jsx} | 0 .../{react_router_helpers.js => react_router_helpers.jsx} | 0 .../ui/util/{reduced_motion.js => reduced_motion.jsx} | 0 .../mastodon/features/video/{index.js => index.jsx} | 0 app/javascript/mastodon/{main.js => main.jsx} | 0 app/javascript/mastodon/utils/{icons.js => icons.jsx} | 0 app/javascript/packs/{admin.js => admin.jsx} | 0 app/javascript/packs/{public.js => public.jsx} | 0 app/javascript/packs/{share.js => share.jsx} | 0 config/webpacker.yml | 1 + package.json | 2 +- 248 files changed, 10 insertions(+), 2 deletions(-) rename app/javascript/mastodon/components/__tests__/__snapshots__/{autosuggest_emoji-test.js.snap => autosuggest_emoji-test.jsx.snap} (100%) rename app/javascript/mastodon/components/__tests__/__snapshots__/{avatar-test.js.snap => avatar-test.jsx.snap} (100%) rename app/javascript/mastodon/components/__tests__/__snapshots__/{avatar_overlay-test.js.snap => avatar_overlay-test.jsx.snap} (100%) rename app/javascript/mastodon/components/__tests__/__snapshots__/{button-test.js.snap => button-test.jsx.snap} (100%) rename app/javascript/mastodon/components/__tests__/__snapshots__/{display_name-test.js.snap => display_name-test.jsx.snap} (100%) rename app/javascript/mastodon/components/__tests__/{autosuggest_emoji-test.js => autosuggest_emoji-test.jsx} (100%) rename app/javascript/mastodon/components/__tests__/{avatar-test.js => avatar-test.jsx} (100%) rename app/javascript/mastodon/components/__tests__/{avatar_overlay-test.js => avatar_overlay-test.jsx} (100%) rename app/javascript/mastodon/components/__tests__/{button-test.js => button-test.jsx} (100%) rename app/javascript/mastodon/components/__tests__/{display_name-test.js => display_name-test.jsx} (100%) rename app/javascript/mastodon/components/{account.js => account.jsx} (100%) rename app/javascript/mastodon/components/admin/{Counter.js => Counter.jsx} (100%) rename app/javascript/mastodon/components/admin/{Dimension.js => Dimension.jsx} (100%) rename app/javascript/mastodon/components/admin/{ReportReasonSelector.js => ReportReasonSelector.jsx} (100%) rename app/javascript/mastodon/components/admin/{Retention.js => Retention.jsx} (100%) rename app/javascript/mastodon/components/admin/{Trends.js => Trends.jsx} (100%) rename app/javascript/mastodon/components/{animated_number.js => animated_number.jsx} (100%) rename app/javascript/mastodon/components/{attachment_list.js => attachment_list.jsx} (100%) rename app/javascript/mastodon/components/{autosuggest_emoji.js => autosuggest_emoji.jsx} (100%) rename app/javascript/mastodon/components/{autosuggest_hashtag.js => autosuggest_hashtag.jsx} (100%) rename app/javascript/mastodon/components/{autosuggest_input.js => autosuggest_input.jsx} (100%) rename app/javascript/mastodon/components/{autosuggest_textarea.js => autosuggest_textarea.jsx} (100%) rename app/javascript/mastodon/components/{avatar.js => avatar.jsx} (100%) rename app/javascript/mastodon/components/{avatar_composite.js => avatar_composite.jsx} (100%) rename app/javascript/mastodon/components/{avatar_overlay.js => avatar_overlay.jsx} (100%) rename app/javascript/mastodon/components/{blurhash.js => blurhash.jsx} (100%) rename app/javascript/mastodon/components/{button.js => button.jsx} (100%) rename app/javascript/mastodon/components/{check.js => check.jsx} (100%) rename app/javascript/mastodon/components/{column.js => column.jsx} (100%) rename app/javascript/mastodon/components/{column_back_button.js => column_back_button.jsx} (100%) rename app/javascript/mastodon/components/{column_back_button_slim.js => column_back_button_slim.jsx} (100%) rename app/javascript/mastodon/components/{column_header.js => column_header.jsx} (100%) rename app/javascript/mastodon/components/{common_counter.js => common_counter.jsx} (100%) rename app/javascript/mastodon/components/{dismissable_banner.js => dismissable_banner.jsx} (100%) rename app/javascript/mastodon/components/{display_name.js => display_name.jsx} (100%) rename app/javascript/mastodon/components/{domain.js => domain.jsx} (100%) rename app/javascript/mastodon/components/{dropdown_menu.js => dropdown_menu.jsx} (100%) rename app/javascript/mastodon/components/edited_timestamp/{index.js => index.jsx} (100%) rename app/javascript/mastodon/components/{error_boundary.js => error_boundary.jsx} (100%) rename app/javascript/mastodon/components/{gifv.js => gifv.jsx} (100%) rename app/javascript/mastodon/components/{hashtag.js => hashtag.jsx} (100%) rename app/javascript/mastodon/components/{icon.js => icon.jsx} (100%) rename app/javascript/mastodon/components/{icon_button.js => icon_button.jsx} (100%) rename app/javascript/mastodon/components/{icon_with_badge.js => icon_with_badge.jsx} (100%) rename app/javascript/mastodon/components/{image.js => image.jsx} (100%) rename app/javascript/mastodon/components/{inline_account.js => inline_account.jsx} (100%) rename app/javascript/mastodon/components/{intersection_observer_article.js => intersection_observer_article.jsx} (100%) rename app/javascript/mastodon/components/{load_gap.js => load_gap.jsx} (100%) rename app/javascript/mastodon/components/{load_more.js => load_more.jsx} (100%) rename app/javascript/mastodon/components/{load_pending.js => load_pending.jsx} (100%) rename app/javascript/mastodon/components/{loading_indicator.js => loading_indicator.jsx} (100%) rename app/javascript/mastodon/components/{logo.js => logo.jsx} (100%) rename app/javascript/mastodon/components/{media_attachments.js => media_attachments.jsx} (100%) rename app/javascript/mastodon/components/{media_gallery.js => media_gallery.jsx} (100%) rename app/javascript/mastodon/components/{missing_indicator.js => missing_indicator.jsx} (100%) rename app/javascript/mastodon/components/{modal_root.js => modal_root.jsx} (100%) rename app/javascript/mastodon/components/{navigation_portal.js => navigation_portal.jsx} (100%) rename app/javascript/mastodon/components/{not_signed_in_indicator.js => not_signed_in_indicator.jsx} (100%) rename app/javascript/mastodon/components/{picture_in_picture_placeholder.js => picture_in_picture_placeholder.jsx} (100%) rename app/javascript/mastodon/components/{poll.js => poll.jsx} (100%) rename app/javascript/mastodon/components/{radio_button.js => radio_button.jsx} (100%) rename app/javascript/mastodon/components/{regeneration_indicator.js => regeneration_indicator.jsx} (100%) rename app/javascript/mastodon/components/{relative_timestamp.js => relative_timestamp.jsx} (100%) rename app/javascript/mastodon/components/{scrollable_list.js => scrollable_list.jsx} (100%) rename app/javascript/mastodon/components/{server_banner.js => server_banner.jsx} (100%) rename app/javascript/mastodon/components/{short_number.js => short_number.jsx} (100%) rename app/javascript/mastodon/components/{skeleton.js => skeleton.jsx} (100%) rename app/javascript/mastodon/components/{status.js => status.jsx} (100%) rename app/javascript/mastodon/components/{status_action_bar.js => status_action_bar.jsx} (100%) rename app/javascript/mastodon/components/{status_content.js => status_content.jsx} (100%) rename app/javascript/mastodon/components/{status_list.js => status_list.jsx} (100%) rename app/javascript/mastodon/components/{timeline_hint.js => timeline_hint.jsx} (100%) rename app/javascript/mastodon/containers/{account_container.js => account_container.jsx} (100%) rename app/javascript/mastodon/containers/{admin_component.js => admin_component.jsx} (100%) rename app/javascript/mastodon/containers/{compose_container.js => compose_container.jsx} (100%) rename app/javascript/mastodon/containers/{domain_container.js => domain_container.jsx} (100%) rename app/javascript/mastodon/containers/{mastodon.js => mastodon.jsx} (100%) rename app/javascript/mastodon/containers/{media_container.js => media_container.jsx} (100%) rename app/javascript/mastodon/containers/{status_container.js => status_container.jsx} (100%) rename app/javascript/mastodon/features/about/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/account/components/{account_note.js => account_note.jsx} (100%) rename app/javascript/mastodon/features/account/components/{featured_tags.js => featured_tags.jsx} (100%) rename app/javascript/mastodon/features/account/components/{follow_request_note.js => follow_request_note.jsx} (100%) rename app/javascript/mastodon/features/account/components/{header.js => header.jsx} (100%) rename app/javascript/mastodon/features/account/{navigation.js => navigation.jsx} (100%) rename app/javascript/mastodon/features/account_gallery/components/{media_item.js => media_item.jsx} (100%) rename app/javascript/mastodon/features/account_gallery/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/account_timeline/components/{header.js => header.jsx} (100%) rename app/javascript/mastodon/features/account_timeline/components/{limited_account_hint.js => limited_account_hint.jsx} (100%) rename app/javascript/mastodon/features/account_timeline/components/{moved_note.js => moved_note.jsx} (100%) rename app/javascript/mastodon/features/account_timeline/containers/{header_container.js => header_container.jsx} (100%) rename app/javascript/mastodon/features/account_timeline/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/audio/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/blocks/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/bookmarked_statuses/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/closed_registrations_modal/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/community_timeline/components/{column_settings.js => column_settings.jsx} (100%) rename app/javascript/mastodon/features/community_timeline/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{action_bar.js => action_bar.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{autosuggest_account.js => autosuggest_account.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{character_counter.js => character_counter.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{compose_form.js => compose_form.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{emoji_picker_dropdown.js => emoji_picker_dropdown.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{language_dropdown.js => language_dropdown.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{navigation_bar.js => navigation_bar.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{poll_button.js => poll_button.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{poll_form.js => poll_form.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{privacy_dropdown.js => privacy_dropdown.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{reply_indicator.js => reply_indicator.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{search.js => search.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{search_results.js => search_results.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{text_icon_button.js => text_icon_button.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{upload.js => upload.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{upload_button.js => upload_button.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{upload_form.js => upload_form.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{upload_progress.js => upload_progress.jsx} (100%) rename app/javascript/mastodon/features/compose/components/{warning.js => warning.jsx} (100%) rename app/javascript/mastodon/features/compose/containers/{sensitive_button_container.js => sensitive_button_container.jsx} (100%) rename app/javascript/mastodon/features/compose/containers/{warning_container.js => warning_container.jsx} (100%) rename app/javascript/mastodon/features/compose/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/direct_timeline/components/{conversation.js => conversation.jsx} (100%) rename app/javascript/mastodon/features/direct_timeline/components/{conversations_list.js => conversations_list.jsx} (100%) rename app/javascript/mastodon/features/direct_timeline/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/directory/components/{account_card.js => account_card.jsx} (100%) rename app/javascript/mastodon/features/directory/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/domain_blocks/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/explore/components/{story.js => story.jsx} (100%) rename app/javascript/mastodon/features/explore/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/explore/{links.js => links.jsx} (100%) rename app/javascript/mastodon/features/explore/{results.js => results.jsx} (100%) rename app/javascript/mastodon/features/explore/{statuses.js => statuses.jsx} (100%) rename app/javascript/mastodon/features/explore/{suggestions.js => suggestions.jsx} (100%) rename app/javascript/mastodon/features/explore/{tags.js => tags.jsx} (100%) rename app/javascript/mastodon/features/favourited_statuses/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/favourites/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/filters/{added_to_filter.js => added_to_filter.jsx} (100%) rename app/javascript/mastodon/features/filters/{select_filter.js => select_filter.jsx} (100%) rename app/javascript/mastodon/features/follow_recommendations/components/{account.js => account.jsx} (100%) rename app/javascript/mastodon/features/follow_recommendations/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/follow_requests/components/{account_authorize.js => account_authorize.jsx} (100%) rename app/javascript/mastodon/features/follow_requests/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/followed_tags/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/followers/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/following/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/generic_not_found/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/getting_started/components/{announcements.js => announcements.jsx} (100%) rename app/javascript/mastodon/features/getting_started/components/{trends.js => trends.jsx} (100%) rename app/javascript/mastodon/features/getting_started/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/hashtag_timeline/components/{column_settings.js => column_settings.jsx} (100%) rename app/javascript/mastodon/features/hashtag_timeline/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/home_timeline/components/{column_settings.js => column_settings.jsx} (100%) rename app/javascript/mastodon/features/home_timeline/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/interaction_modal/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/keyboard_shortcuts/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/list_adder/components/{account.js => account.jsx} (100%) rename app/javascript/mastodon/features/list_adder/components/{list.js => list.jsx} (100%) rename app/javascript/mastodon/features/list_adder/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/list_editor/components/{account.js => account.jsx} (100%) rename app/javascript/mastodon/features/list_editor/components/{edit_list_form.js => edit_list_form.jsx} (100%) rename app/javascript/mastodon/features/list_editor/components/{search.js => search.jsx} (100%) rename app/javascript/mastodon/features/list_editor/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/list_timeline/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/lists/components/{new_list_form.js => new_list_form.jsx} (100%) rename app/javascript/mastodon/features/lists/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/mutes/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{clear_column_button.js => clear_column_button.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{column_settings.js => column_settings.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{filter_bar.js => filter_bar.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{follow_request.js => follow_request.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{grant_permission_button.js => grant_permission_button.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{notification.js => notification.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{notifications_permission_banner.js => notifications_permission_banner.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{report.js => report.jsx} (100%) rename app/javascript/mastodon/features/notifications/components/{setting_toggle.js => setting_toggle.jsx} (100%) rename app/javascript/mastodon/features/notifications/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/picture_in_picture/components/{footer.js => footer.jsx} (100%) rename app/javascript/mastodon/features/picture_in_picture/components/{header.js => header.jsx} (100%) rename app/javascript/mastodon/features/picture_in_picture/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/pinned_statuses/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/privacy_policy/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/public_timeline/components/{column_settings.js => column_settings.jsx} (100%) rename app/javascript/mastodon/features/public_timeline/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/reblogs/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/report/{category.js => category.jsx} (100%) rename app/javascript/mastodon/features/report/{comment.js => comment.jsx} (100%) rename app/javascript/mastodon/features/report/components/{option.js => option.jsx} (100%) rename app/javascript/mastodon/features/report/components/{status_check_box.js => status_check_box.jsx} (100%) rename app/javascript/mastodon/features/report/{rules.js => rules.jsx} (100%) rename app/javascript/mastodon/features/report/{statuses.js => statuses.jsx} (100%) rename app/javascript/mastodon/features/report/{thanks.js => thanks.jsx} (100%) rename app/javascript/mastodon/features/standalone/compose/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/status/components/{action_bar.js => action_bar.jsx} (100%) rename app/javascript/mastodon/features/status/components/{card.js => card.jsx} (100%) rename app/javascript/mastodon/features/status/components/{detailed_status.js => detailed_status.jsx} (100%) rename app/javascript/mastodon/features/status/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/subscribed_languages_modal/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/ui/components/__tests__/{column-test.js => column-test.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{actions_modal.js => actions_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{audio_modal.js => audio_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{block_modal.js => block_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{boost_modal.js => boost_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{bundle.js => bundle.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{bundle_column_error.js => bundle_column_error.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{bundle_modal_error.js => bundle_modal_error.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{column.js => column.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{column_header.js => column_header.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{column_link.js => column_link.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{column_loading.js => column_loading.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{column_subheading.js => column_subheading.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{columns_area.js => columns_area.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{compare_history_modal.js => compare_history_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{compose_panel.js => compose_panel.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{confirmation_modal.js => confirmation_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{disabled_account_banner.js => disabled_account_banner.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{drawer_loading.js => drawer_loading.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{embed_modal.js => embed_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{filter_modal.js => filter_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{focal_point_modal.js => focal_point_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{follow_requests_column_link.js => follow_requests_column_link.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{header.js => header.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{image_loader.js => image_loader.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{image_modal.js => image_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{link_footer.js => link_footer.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{list_panel.js => list_panel.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{media_modal.js => media_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{modal_loading.js => modal_loading.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{modal_root.js => modal_root.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{mute_modal.js => mute_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{navigation_panel.js => navigation_panel.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{report_modal.js => report_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{sign_in_banner.js => sign_in_banner.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{upload_area.js => upload_area.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{video_modal.js => video_modal.jsx} (100%) rename app/javascript/mastodon/features/ui/components/{zoomable_image.js => zoomable_image.jsx} (100%) rename app/javascript/mastodon/features/ui/{index.js => index.jsx} (100%) rename app/javascript/mastodon/features/ui/util/{react_router_helpers.js => react_router_helpers.jsx} (100%) rename app/javascript/mastodon/features/ui/util/{reduced_motion.js => reduced_motion.jsx} (100%) rename app/javascript/mastodon/features/video/{index.js => index.jsx} (100%) rename app/javascript/mastodon/{main.js => main.jsx} (100%) rename app/javascript/mastodon/utils/{icons.js => icons.jsx} (100%) rename app/javascript/packs/{admin.js => admin.jsx} (100%) rename app/javascript/packs/{public.js => public.jsx} (100%) rename app/javascript/packs/{share.js => share.jsx} (100%) diff --git a/.eslintrc.js b/.eslintrc.js index b5ab511f8b..606a87e415 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -43,7 +43,7 @@ module.exports = { version: 'detect', }, 'import/extensions': [ - '.js', + '.js', '.jsx', ], 'import/ignore': [ 'node_modules', @@ -52,6 +52,7 @@ module.exports = { 'import/resolver': { node: { paths: ['app/javascript'], + extensions: ['.js', '.jsx'], }, }, }, @@ -111,6 +112,7 @@ module.exports = { semi: 'error', 'valid-typeof': 'error', + 'react/jsx-filename-extension': ['error', { 'allow': 'as-needed' }], 'react/jsx-boolean-value': 'error', 'react/jsx-closing-bracket-location': ['error', 'line-aligned'], 'react/jsx-curly-spacing': 'error', @@ -185,6 +187,7 @@ module.exports = { 'always', { js: 'never', + jsx: 'never', }, ], 'import/newline-after-import': 'error', diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml index 3e0d9d1a92..44929f63db 100644 --- a/.github/workflows/lint-js.yml +++ b/.github/workflows/lint-js.yml @@ -10,6 +10,7 @@ on: - '.prettier*' - '.eslint*' - '**/*.js' + - '**/*.jsx' - '.github/workflows/lint-js.yml' pull_request: @@ -20,6 +21,7 @@ on: - '.prettier*' - '.eslint*' - '**/*.js' + - '**/*.jsx' - '.github/workflows/lint-js.yml' jobs: diff --git a/.github/workflows/test-js.yml b/.github/workflows/test-js.yml index 60b8e318ef..6a1cacb3f0 100644 --- a/.github/workflows/test-js.yml +++ b/.github/workflows/test-js.yml @@ -8,6 +8,7 @@ on: - 'yarn.lock' - '.nvmrc' - '**/*.js' + - '**/*.jsx' - '**/*.snap' - '.github/workflows/test-js.yml' @@ -17,6 +18,7 @@ on: - 'yarn.lock' - '.nvmrc' - '**/*.js' + - '**/*.jsx' - '**/*.snap' - '.github/workflows/test-js.yml' diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.jsx.snap similarity index 100% rename from app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.js.snap rename to app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.jsx.snap diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.jsx.snap similarity index 100% rename from app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap rename to app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.jsx.snap diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.jsx.snap similarity index 100% rename from app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap rename to app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.jsx.snap diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.jsx.snap similarity index 100% rename from app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap rename to app/javascript/mastodon/components/__tests__/__snapshots__/button-test.jsx.snap diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/display_name-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/display_name-test.jsx.snap similarity index 100% rename from app/javascript/mastodon/components/__tests__/__snapshots__/display_name-test.js.snap rename to app/javascript/mastodon/components/__tests__/__snapshots__/display_name-test.jsx.snap diff --git a/app/javascript/mastodon/components/__tests__/autosuggest_emoji-test.js b/app/javascript/mastodon/components/__tests__/autosuggest_emoji-test.jsx similarity index 100% rename from app/javascript/mastodon/components/__tests__/autosuggest_emoji-test.js rename to app/javascript/mastodon/components/__tests__/autosuggest_emoji-test.jsx diff --git a/app/javascript/mastodon/components/__tests__/avatar-test.js b/app/javascript/mastodon/components/__tests__/avatar-test.jsx similarity index 100% rename from app/javascript/mastodon/components/__tests__/avatar-test.js rename to app/javascript/mastodon/components/__tests__/avatar-test.jsx diff --git a/app/javascript/mastodon/components/__tests__/avatar_overlay-test.js b/app/javascript/mastodon/components/__tests__/avatar_overlay-test.jsx similarity index 100% rename from app/javascript/mastodon/components/__tests__/avatar_overlay-test.js rename to app/javascript/mastodon/components/__tests__/avatar_overlay-test.jsx diff --git a/app/javascript/mastodon/components/__tests__/button-test.js b/app/javascript/mastodon/components/__tests__/button-test.jsx similarity index 100% rename from app/javascript/mastodon/components/__tests__/button-test.js rename to app/javascript/mastodon/components/__tests__/button-test.jsx diff --git a/app/javascript/mastodon/components/__tests__/display_name-test.js b/app/javascript/mastodon/components/__tests__/display_name-test.jsx similarity index 100% rename from app/javascript/mastodon/components/__tests__/display_name-test.js rename to app/javascript/mastodon/components/__tests__/display_name-test.jsx diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.jsx similarity index 100% rename from app/javascript/mastodon/components/account.js rename to app/javascript/mastodon/components/account.jsx diff --git a/app/javascript/mastodon/components/admin/Counter.js b/app/javascript/mastodon/components/admin/Counter.jsx similarity index 100% rename from app/javascript/mastodon/components/admin/Counter.js rename to app/javascript/mastodon/components/admin/Counter.jsx diff --git a/app/javascript/mastodon/components/admin/Dimension.js b/app/javascript/mastodon/components/admin/Dimension.jsx similarity index 100% rename from app/javascript/mastodon/components/admin/Dimension.js rename to app/javascript/mastodon/components/admin/Dimension.jsx diff --git a/app/javascript/mastodon/components/admin/ReportReasonSelector.js b/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx similarity index 100% rename from app/javascript/mastodon/components/admin/ReportReasonSelector.js rename to app/javascript/mastodon/components/admin/ReportReasonSelector.jsx diff --git a/app/javascript/mastodon/components/admin/Retention.js b/app/javascript/mastodon/components/admin/Retention.jsx similarity index 100% rename from app/javascript/mastodon/components/admin/Retention.js rename to app/javascript/mastodon/components/admin/Retention.jsx diff --git a/app/javascript/mastodon/components/admin/Trends.js b/app/javascript/mastodon/components/admin/Trends.jsx similarity index 100% rename from app/javascript/mastodon/components/admin/Trends.js rename to app/javascript/mastodon/components/admin/Trends.jsx diff --git a/app/javascript/mastodon/components/animated_number.js b/app/javascript/mastodon/components/animated_number.jsx similarity index 100% rename from app/javascript/mastodon/components/animated_number.js rename to app/javascript/mastodon/components/animated_number.jsx diff --git a/app/javascript/mastodon/components/attachment_list.js b/app/javascript/mastodon/components/attachment_list.jsx similarity index 100% rename from app/javascript/mastodon/components/attachment_list.js rename to app/javascript/mastodon/components/attachment_list.jsx diff --git a/app/javascript/mastodon/components/autosuggest_emoji.js b/app/javascript/mastodon/components/autosuggest_emoji.jsx similarity index 100% rename from app/javascript/mastodon/components/autosuggest_emoji.js rename to app/javascript/mastodon/components/autosuggest_emoji.jsx diff --git a/app/javascript/mastodon/components/autosuggest_hashtag.js b/app/javascript/mastodon/components/autosuggest_hashtag.jsx similarity index 100% rename from app/javascript/mastodon/components/autosuggest_hashtag.js rename to app/javascript/mastodon/components/autosuggest_hashtag.jsx diff --git a/app/javascript/mastodon/components/autosuggest_input.js b/app/javascript/mastodon/components/autosuggest_input.jsx similarity index 100% rename from app/javascript/mastodon/components/autosuggest_input.js rename to app/javascript/mastodon/components/autosuggest_input.jsx diff --git a/app/javascript/mastodon/components/autosuggest_textarea.js b/app/javascript/mastodon/components/autosuggest_textarea.jsx similarity index 100% rename from app/javascript/mastodon/components/autosuggest_textarea.js rename to app/javascript/mastodon/components/autosuggest_textarea.jsx diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.jsx similarity index 100% rename from app/javascript/mastodon/components/avatar.js rename to app/javascript/mastodon/components/avatar.jsx diff --git a/app/javascript/mastodon/components/avatar_composite.js b/app/javascript/mastodon/components/avatar_composite.jsx similarity index 100% rename from app/javascript/mastodon/components/avatar_composite.js rename to app/javascript/mastodon/components/avatar_composite.jsx diff --git a/app/javascript/mastodon/components/avatar_overlay.js b/app/javascript/mastodon/components/avatar_overlay.jsx similarity index 100% rename from app/javascript/mastodon/components/avatar_overlay.js rename to app/javascript/mastodon/components/avatar_overlay.jsx diff --git a/app/javascript/mastodon/components/blurhash.js b/app/javascript/mastodon/components/blurhash.jsx similarity index 100% rename from app/javascript/mastodon/components/blurhash.js rename to app/javascript/mastodon/components/blurhash.jsx diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.jsx similarity index 100% rename from app/javascript/mastodon/components/button.js rename to app/javascript/mastodon/components/button.jsx diff --git a/app/javascript/mastodon/components/check.js b/app/javascript/mastodon/components/check.jsx similarity index 100% rename from app/javascript/mastodon/components/check.js rename to app/javascript/mastodon/components/check.jsx diff --git a/app/javascript/mastodon/components/column.js b/app/javascript/mastodon/components/column.jsx similarity index 100% rename from app/javascript/mastodon/components/column.js rename to app/javascript/mastodon/components/column.jsx diff --git a/app/javascript/mastodon/components/column_back_button.js b/app/javascript/mastodon/components/column_back_button.jsx similarity index 100% rename from app/javascript/mastodon/components/column_back_button.js rename to app/javascript/mastodon/components/column_back_button.jsx diff --git a/app/javascript/mastodon/components/column_back_button_slim.js b/app/javascript/mastodon/components/column_back_button_slim.jsx similarity index 100% rename from app/javascript/mastodon/components/column_back_button_slim.js rename to app/javascript/mastodon/components/column_back_button_slim.jsx diff --git a/app/javascript/mastodon/components/column_header.js b/app/javascript/mastodon/components/column_header.jsx similarity index 100% rename from app/javascript/mastodon/components/column_header.js rename to app/javascript/mastodon/components/column_header.jsx diff --git a/app/javascript/mastodon/components/common_counter.js b/app/javascript/mastodon/components/common_counter.jsx similarity index 100% rename from app/javascript/mastodon/components/common_counter.js rename to app/javascript/mastodon/components/common_counter.jsx diff --git a/app/javascript/mastodon/components/dismissable_banner.js b/app/javascript/mastodon/components/dismissable_banner.jsx similarity index 100% rename from app/javascript/mastodon/components/dismissable_banner.js rename to app/javascript/mastodon/components/dismissable_banner.jsx diff --git a/app/javascript/mastodon/components/display_name.js b/app/javascript/mastodon/components/display_name.jsx similarity index 100% rename from app/javascript/mastodon/components/display_name.js rename to app/javascript/mastodon/components/display_name.jsx diff --git a/app/javascript/mastodon/components/domain.js b/app/javascript/mastodon/components/domain.jsx similarity index 100% rename from app/javascript/mastodon/components/domain.js rename to app/javascript/mastodon/components/domain.jsx diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.jsx similarity index 100% rename from app/javascript/mastodon/components/dropdown_menu.js rename to app/javascript/mastodon/components/dropdown_menu.jsx diff --git a/app/javascript/mastodon/components/edited_timestamp/index.js b/app/javascript/mastodon/components/edited_timestamp/index.jsx similarity index 100% rename from app/javascript/mastodon/components/edited_timestamp/index.js rename to app/javascript/mastodon/components/edited_timestamp/index.jsx diff --git a/app/javascript/mastodon/components/error_boundary.js b/app/javascript/mastodon/components/error_boundary.jsx similarity index 100% rename from app/javascript/mastodon/components/error_boundary.js rename to app/javascript/mastodon/components/error_boundary.jsx diff --git a/app/javascript/mastodon/components/gifv.js b/app/javascript/mastodon/components/gifv.jsx similarity index 100% rename from app/javascript/mastodon/components/gifv.js rename to app/javascript/mastodon/components/gifv.jsx diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.jsx similarity index 100% rename from app/javascript/mastodon/components/hashtag.js rename to app/javascript/mastodon/components/hashtag.jsx diff --git a/app/javascript/mastodon/components/icon.js b/app/javascript/mastodon/components/icon.jsx similarity index 100% rename from app/javascript/mastodon/components/icon.js rename to app/javascript/mastodon/components/icon.jsx diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.jsx similarity index 100% rename from app/javascript/mastodon/components/icon_button.js rename to app/javascript/mastodon/components/icon_button.jsx diff --git a/app/javascript/mastodon/components/icon_with_badge.js b/app/javascript/mastodon/components/icon_with_badge.jsx similarity index 100% rename from app/javascript/mastodon/components/icon_with_badge.js rename to app/javascript/mastodon/components/icon_with_badge.jsx diff --git a/app/javascript/mastodon/components/image.js b/app/javascript/mastodon/components/image.jsx similarity index 100% rename from app/javascript/mastodon/components/image.js rename to app/javascript/mastodon/components/image.jsx diff --git a/app/javascript/mastodon/components/inline_account.js b/app/javascript/mastodon/components/inline_account.jsx similarity index 100% rename from app/javascript/mastodon/components/inline_account.js rename to app/javascript/mastodon/components/inline_account.jsx diff --git a/app/javascript/mastodon/components/intersection_observer_article.js b/app/javascript/mastodon/components/intersection_observer_article.jsx similarity index 100% rename from app/javascript/mastodon/components/intersection_observer_article.js rename to app/javascript/mastodon/components/intersection_observer_article.jsx diff --git a/app/javascript/mastodon/components/load_gap.js b/app/javascript/mastodon/components/load_gap.jsx similarity index 100% rename from app/javascript/mastodon/components/load_gap.js rename to app/javascript/mastodon/components/load_gap.jsx diff --git a/app/javascript/mastodon/components/load_more.js b/app/javascript/mastodon/components/load_more.jsx similarity index 100% rename from app/javascript/mastodon/components/load_more.js rename to app/javascript/mastodon/components/load_more.jsx diff --git a/app/javascript/mastodon/components/load_pending.js b/app/javascript/mastodon/components/load_pending.jsx similarity index 100% rename from app/javascript/mastodon/components/load_pending.js rename to app/javascript/mastodon/components/load_pending.jsx diff --git a/app/javascript/mastodon/components/loading_indicator.js b/app/javascript/mastodon/components/loading_indicator.jsx similarity index 100% rename from app/javascript/mastodon/components/loading_indicator.js rename to app/javascript/mastodon/components/loading_indicator.jsx diff --git a/app/javascript/mastodon/components/logo.js b/app/javascript/mastodon/components/logo.jsx similarity index 100% rename from app/javascript/mastodon/components/logo.js rename to app/javascript/mastodon/components/logo.jsx diff --git a/app/javascript/mastodon/components/media_attachments.js b/app/javascript/mastodon/components/media_attachments.jsx similarity index 100% rename from app/javascript/mastodon/components/media_attachments.js rename to app/javascript/mastodon/components/media_attachments.jsx diff --git a/app/javascript/mastodon/components/media_gallery.js b/app/javascript/mastodon/components/media_gallery.jsx similarity index 100% rename from app/javascript/mastodon/components/media_gallery.js rename to app/javascript/mastodon/components/media_gallery.jsx diff --git a/app/javascript/mastodon/components/missing_indicator.js b/app/javascript/mastodon/components/missing_indicator.jsx similarity index 100% rename from app/javascript/mastodon/components/missing_indicator.js rename to app/javascript/mastodon/components/missing_indicator.jsx diff --git a/app/javascript/mastodon/components/modal_root.js b/app/javascript/mastodon/components/modal_root.jsx similarity index 100% rename from app/javascript/mastodon/components/modal_root.js rename to app/javascript/mastodon/components/modal_root.jsx diff --git a/app/javascript/mastodon/components/navigation_portal.js b/app/javascript/mastodon/components/navigation_portal.jsx similarity index 100% rename from app/javascript/mastodon/components/navigation_portal.js rename to app/javascript/mastodon/components/navigation_portal.jsx diff --git a/app/javascript/mastodon/components/not_signed_in_indicator.js b/app/javascript/mastodon/components/not_signed_in_indicator.jsx similarity index 100% rename from app/javascript/mastodon/components/not_signed_in_indicator.js rename to app/javascript/mastodon/components/not_signed_in_indicator.jsx diff --git a/app/javascript/mastodon/components/picture_in_picture_placeholder.js b/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx similarity index 100% rename from app/javascript/mastodon/components/picture_in_picture_placeholder.js rename to app/javascript/mastodon/components/picture_in_picture_placeholder.jsx diff --git a/app/javascript/mastodon/components/poll.js b/app/javascript/mastodon/components/poll.jsx similarity index 100% rename from app/javascript/mastodon/components/poll.js rename to app/javascript/mastodon/components/poll.jsx diff --git a/app/javascript/mastodon/components/radio_button.js b/app/javascript/mastodon/components/radio_button.jsx similarity index 100% rename from app/javascript/mastodon/components/radio_button.js rename to app/javascript/mastodon/components/radio_button.jsx diff --git a/app/javascript/mastodon/components/regeneration_indicator.js b/app/javascript/mastodon/components/regeneration_indicator.jsx similarity index 100% rename from app/javascript/mastodon/components/regeneration_indicator.js rename to app/javascript/mastodon/components/regeneration_indicator.jsx diff --git a/app/javascript/mastodon/components/relative_timestamp.js b/app/javascript/mastodon/components/relative_timestamp.jsx similarity index 100% rename from app/javascript/mastodon/components/relative_timestamp.js rename to app/javascript/mastodon/components/relative_timestamp.jsx diff --git a/app/javascript/mastodon/components/scrollable_list.js b/app/javascript/mastodon/components/scrollable_list.jsx similarity index 100% rename from app/javascript/mastodon/components/scrollable_list.js rename to app/javascript/mastodon/components/scrollable_list.jsx diff --git a/app/javascript/mastodon/components/server_banner.js b/app/javascript/mastodon/components/server_banner.jsx similarity index 100% rename from app/javascript/mastodon/components/server_banner.js rename to app/javascript/mastodon/components/server_banner.jsx diff --git a/app/javascript/mastodon/components/short_number.js b/app/javascript/mastodon/components/short_number.jsx similarity index 100% rename from app/javascript/mastodon/components/short_number.js rename to app/javascript/mastodon/components/short_number.jsx diff --git a/app/javascript/mastodon/components/skeleton.js b/app/javascript/mastodon/components/skeleton.jsx similarity index 100% rename from app/javascript/mastodon/components/skeleton.js rename to app/javascript/mastodon/components/skeleton.jsx diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.jsx similarity index 100% rename from app/javascript/mastodon/components/status.js rename to app/javascript/mastodon/components/status.jsx diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.jsx similarity index 100% rename from app/javascript/mastodon/components/status_action_bar.js rename to app/javascript/mastodon/components/status_action_bar.jsx diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.jsx similarity index 100% rename from app/javascript/mastodon/components/status_content.js rename to app/javascript/mastodon/components/status_content.jsx diff --git a/app/javascript/mastodon/components/status_list.js b/app/javascript/mastodon/components/status_list.jsx similarity index 100% rename from app/javascript/mastodon/components/status_list.js rename to app/javascript/mastodon/components/status_list.jsx diff --git a/app/javascript/mastodon/components/timeline_hint.js b/app/javascript/mastodon/components/timeline_hint.jsx similarity index 100% rename from app/javascript/mastodon/components/timeline_hint.js rename to app/javascript/mastodon/components/timeline_hint.jsx diff --git a/app/javascript/mastodon/containers/account_container.js b/app/javascript/mastodon/containers/account_container.jsx similarity index 100% rename from app/javascript/mastodon/containers/account_container.js rename to app/javascript/mastodon/containers/account_container.jsx diff --git a/app/javascript/mastodon/containers/admin_component.js b/app/javascript/mastodon/containers/admin_component.jsx similarity index 100% rename from app/javascript/mastodon/containers/admin_component.js rename to app/javascript/mastodon/containers/admin_component.jsx diff --git a/app/javascript/mastodon/containers/compose_container.js b/app/javascript/mastodon/containers/compose_container.jsx similarity index 100% rename from app/javascript/mastodon/containers/compose_container.js rename to app/javascript/mastodon/containers/compose_container.jsx diff --git a/app/javascript/mastodon/containers/domain_container.js b/app/javascript/mastodon/containers/domain_container.jsx similarity index 100% rename from app/javascript/mastodon/containers/domain_container.js rename to app/javascript/mastodon/containers/domain_container.jsx diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.jsx similarity index 100% rename from app/javascript/mastodon/containers/mastodon.js rename to app/javascript/mastodon/containers/mastodon.jsx diff --git a/app/javascript/mastodon/containers/media_container.js b/app/javascript/mastodon/containers/media_container.jsx similarity index 100% rename from app/javascript/mastodon/containers/media_container.js rename to app/javascript/mastodon/containers/media_container.jsx diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.jsx similarity index 100% rename from app/javascript/mastodon/containers/status_container.js rename to app/javascript/mastodon/containers/status_container.jsx diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.jsx similarity index 100% rename from app/javascript/mastodon/features/about/index.js rename to app/javascript/mastodon/features/about/index.jsx diff --git a/app/javascript/mastodon/features/account/components/account_note.js b/app/javascript/mastodon/features/account/components/account_note.jsx similarity index 100% rename from app/javascript/mastodon/features/account/components/account_note.js rename to app/javascript/mastodon/features/account/components/account_note.jsx diff --git a/app/javascript/mastodon/features/account/components/featured_tags.js b/app/javascript/mastodon/features/account/components/featured_tags.jsx similarity index 100% rename from app/javascript/mastodon/features/account/components/featured_tags.js rename to app/javascript/mastodon/features/account/components/featured_tags.jsx diff --git a/app/javascript/mastodon/features/account/components/follow_request_note.js b/app/javascript/mastodon/features/account/components/follow_request_note.jsx similarity index 100% rename from app/javascript/mastodon/features/account/components/follow_request_note.js rename to app/javascript/mastodon/features/account/components/follow_request_note.jsx diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.jsx similarity index 100% rename from app/javascript/mastodon/features/account/components/header.js rename to app/javascript/mastodon/features/account/components/header.jsx diff --git a/app/javascript/mastodon/features/account/navigation.js b/app/javascript/mastodon/features/account/navigation.jsx similarity index 100% rename from app/javascript/mastodon/features/account/navigation.js rename to app/javascript/mastodon/features/account/navigation.jsx diff --git a/app/javascript/mastodon/features/account_gallery/components/media_item.js b/app/javascript/mastodon/features/account_gallery/components/media_item.jsx similarity index 100% rename from app/javascript/mastodon/features/account_gallery/components/media_item.js rename to app/javascript/mastodon/features/account_gallery/components/media_item.jsx diff --git a/app/javascript/mastodon/features/account_gallery/index.js b/app/javascript/mastodon/features/account_gallery/index.jsx similarity index 100% rename from app/javascript/mastodon/features/account_gallery/index.js rename to app/javascript/mastodon/features/account_gallery/index.jsx diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.jsx similarity index 100% rename from app/javascript/mastodon/features/account_timeline/components/header.js rename to app/javascript/mastodon/features/account_timeline/components/header.jsx diff --git a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.jsx similarity index 100% rename from app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js rename to app/javascript/mastodon/features/account_timeline/components/limited_account_hint.jsx diff --git a/app/javascript/mastodon/features/account_timeline/components/moved_note.js b/app/javascript/mastodon/features/account_timeline/components/moved_note.jsx similarity index 100% rename from app/javascript/mastodon/features/account_timeline/components/moved_note.js rename to app/javascript/mastodon/features/account_timeline/components/moved_note.jsx diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx similarity index 100% rename from app/javascript/mastodon/features/account_timeline/containers/header_container.js rename to app/javascript/mastodon/features/account_timeline/containers/header_container.jsx diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.jsx similarity index 100% rename from app/javascript/mastodon/features/account_timeline/index.js rename to app/javascript/mastodon/features/account_timeline/index.jsx diff --git a/app/javascript/mastodon/features/audio/index.js b/app/javascript/mastodon/features/audio/index.jsx similarity index 100% rename from app/javascript/mastodon/features/audio/index.js rename to app/javascript/mastodon/features/audio/index.jsx diff --git a/app/javascript/mastodon/features/blocks/index.js b/app/javascript/mastodon/features/blocks/index.jsx similarity index 100% rename from app/javascript/mastodon/features/blocks/index.js rename to app/javascript/mastodon/features/blocks/index.jsx diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.js b/app/javascript/mastodon/features/bookmarked_statuses/index.jsx similarity index 100% rename from app/javascript/mastodon/features/bookmarked_statuses/index.js rename to app/javascript/mastodon/features/bookmarked_statuses/index.jsx diff --git a/app/javascript/mastodon/features/closed_registrations_modal/index.js b/app/javascript/mastodon/features/closed_registrations_modal/index.jsx similarity index 100% rename from app/javascript/mastodon/features/closed_registrations_modal/index.js rename to app/javascript/mastodon/features/closed_registrations_modal/index.jsx diff --git a/app/javascript/mastodon/features/community_timeline/components/column_settings.js b/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx similarity index 100% rename from app/javascript/mastodon/features/community_timeline/components/column_settings.js rename to app/javascript/mastodon/features/community_timeline/components/column_settings.jsx diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.jsx similarity index 100% rename from app/javascript/mastodon/features/community_timeline/index.js rename to app/javascript/mastodon/features/community_timeline/index.jsx diff --git a/app/javascript/mastodon/features/compose/components/action_bar.js b/app/javascript/mastodon/features/compose/components/action_bar.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/action_bar.js rename to app/javascript/mastodon/features/compose/components/action_bar.jsx diff --git a/app/javascript/mastodon/features/compose/components/autosuggest_account.js b/app/javascript/mastodon/features/compose/components/autosuggest_account.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/autosuggest_account.js rename to app/javascript/mastodon/features/compose/components/autosuggest_account.jsx diff --git a/app/javascript/mastodon/features/compose/components/character_counter.js b/app/javascript/mastodon/features/compose/components/character_counter.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/character_counter.js rename to app/javascript/mastodon/features/compose/components/character_counter.jsx diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/compose_form.js rename to app/javascript/mastodon/features/compose/components/compose_form.jsx diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js rename to app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.js b/app/javascript/mastodon/features/compose/components/language_dropdown.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/language_dropdown.js rename to app/javascript/mastodon/features/compose/components/language_dropdown.jsx diff --git a/app/javascript/mastodon/features/compose/components/navigation_bar.js b/app/javascript/mastodon/features/compose/components/navigation_bar.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/navigation_bar.js rename to app/javascript/mastodon/features/compose/components/navigation_bar.jsx diff --git a/app/javascript/mastodon/features/compose/components/poll_button.js b/app/javascript/mastodon/features/compose/components/poll_button.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/poll_button.js rename to app/javascript/mastodon/features/compose/components/poll_button.jsx diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/poll_form.js rename to app/javascript/mastodon/features/compose/components/poll_form.jsx diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/privacy_dropdown.js rename to app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx diff --git a/app/javascript/mastodon/features/compose/components/reply_indicator.js b/app/javascript/mastodon/features/compose/components/reply_indicator.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/reply_indicator.js rename to app/javascript/mastodon/features/compose/components/reply_indicator.jsx diff --git a/app/javascript/mastodon/features/compose/components/search.js b/app/javascript/mastodon/features/compose/components/search.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/search.js rename to app/javascript/mastodon/features/compose/components/search.jsx diff --git a/app/javascript/mastodon/features/compose/components/search_results.js b/app/javascript/mastodon/features/compose/components/search_results.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/search_results.js rename to app/javascript/mastodon/features/compose/components/search_results.jsx diff --git a/app/javascript/mastodon/features/compose/components/text_icon_button.js b/app/javascript/mastodon/features/compose/components/text_icon_button.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/text_icon_button.js rename to app/javascript/mastodon/features/compose/components/text_icon_button.jsx diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/upload.js rename to app/javascript/mastodon/features/compose/components/upload.jsx diff --git a/app/javascript/mastodon/features/compose/components/upload_button.js b/app/javascript/mastodon/features/compose/components/upload_button.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/upload_button.js rename to app/javascript/mastodon/features/compose/components/upload_button.jsx diff --git a/app/javascript/mastodon/features/compose/components/upload_form.js b/app/javascript/mastodon/features/compose/components/upload_form.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/upload_form.js rename to app/javascript/mastodon/features/compose/components/upload_form.jsx diff --git a/app/javascript/mastodon/features/compose/components/upload_progress.js b/app/javascript/mastodon/features/compose/components/upload_progress.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/upload_progress.js rename to app/javascript/mastodon/features/compose/components/upload_progress.jsx diff --git a/app/javascript/mastodon/features/compose/components/warning.js b/app/javascript/mastodon/features/compose/components/warning.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/components/warning.js rename to app/javascript/mastodon/features/compose/components/warning.jsx diff --git a/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js b/app/javascript/mastodon/features/compose/containers/sensitive_button_container.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/containers/sensitive_button_container.js rename to app/javascript/mastodon/features/compose/containers/sensitive_button_container.jsx diff --git a/app/javascript/mastodon/features/compose/containers/warning_container.js b/app/javascript/mastodon/features/compose/containers/warning_container.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/containers/warning_container.js rename to app/javascript/mastodon/features/compose/containers/warning_container.jsx diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.jsx similarity index 100% rename from app/javascript/mastodon/features/compose/index.js rename to app/javascript/mastodon/features/compose/index.jsx diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.js b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx similarity index 100% rename from app/javascript/mastodon/features/direct_timeline/components/conversation.js rename to app/javascript/mastodon/features/direct_timeline/components/conversation.jsx diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx similarity index 100% rename from app/javascript/mastodon/features/direct_timeline/components/conversations_list.js rename to app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx diff --git a/app/javascript/mastodon/features/direct_timeline/index.js b/app/javascript/mastodon/features/direct_timeline/index.jsx similarity index 100% rename from app/javascript/mastodon/features/direct_timeline/index.js rename to app/javascript/mastodon/features/direct_timeline/index.jsx diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.jsx similarity index 100% rename from app/javascript/mastodon/features/directory/components/account_card.js rename to app/javascript/mastodon/features/directory/components/account_card.jsx diff --git a/app/javascript/mastodon/features/directory/index.js b/app/javascript/mastodon/features/directory/index.jsx similarity index 100% rename from app/javascript/mastodon/features/directory/index.js rename to app/javascript/mastodon/features/directory/index.jsx diff --git a/app/javascript/mastodon/features/domain_blocks/index.js b/app/javascript/mastodon/features/domain_blocks/index.jsx similarity index 100% rename from app/javascript/mastodon/features/domain_blocks/index.js rename to app/javascript/mastodon/features/domain_blocks/index.jsx diff --git a/app/javascript/mastodon/features/explore/components/story.js b/app/javascript/mastodon/features/explore/components/story.jsx similarity index 100% rename from app/javascript/mastodon/features/explore/components/story.js rename to app/javascript/mastodon/features/explore/components/story.jsx diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.jsx similarity index 100% rename from app/javascript/mastodon/features/explore/index.js rename to app/javascript/mastodon/features/explore/index.jsx diff --git a/app/javascript/mastodon/features/explore/links.js b/app/javascript/mastodon/features/explore/links.jsx similarity index 100% rename from app/javascript/mastodon/features/explore/links.js rename to app/javascript/mastodon/features/explore/links.jsx diff --git a/app/javascript/mastodon/features/explore/results.js b/app/javascript/mastodon/features/explore/results.jsx similarity index 100% rename from app/javascript/mastodon/features/explore/results.js rename to app/javascript/mastodon/features/explore/results.jsx diff --git a/app/javascript/mastodon/features/explore/statuses.js b/app/javascript/mastodon/features/explore/statuses.jsx similarity index 100% rename from app/javascript/mastodon/features/explore/statuses.js rename to app/javascript/mastodon/features/explore/statuses.jsx diff --git a/app/javascript/mastodon/features/explore/suggestions.js b/app/javascript/mastodon/features/explore/suggestions.jsx similarity index 100% rename from app/javascript/mastodon/features/explore/suggestions.js rename to app/javascript/mastodon/features/explore/suggestions.jsx diff --git a/app/javascript/mastodon/features/explore/tags.js b/app/javascript/mastodon/features/explore/tags.jsx similarity index 100% rename from app/javascript/mastodon/features/explore/tags.js rename to app/javascript/mastodon/features/explore/tags.jsx diff --git a/app/javascript/mastodon/features/favourited_statuses/index.js b/app/javascript/mastodon/features/favourited_statuses/index.jsx similarity index 100% rename from app/javascript/mastodon/features/favourited_statuses/index.js rename to app/javascript/mastodon/features/favourited_statuses/index.jsx diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.jsx similarity index 100% rename from app/javascript/mastodon/features/favourites/index.js rename to app/javascript/mastodon/features/favourites/index.jsx diff --git a/app/javascript/mastodon/features/filters/added_to_filter.js b/app/javascript/mastodon/features/filters/added_to_filter.jsx similarity index 100% rename from app/javascript/mastodon/features/filters/added_to_filter.js rename to app/javascript/mastodon/features/filters/added_to_filter.jsx diff --git a/app/javascript/mastodon/features/filters/select_filter.js b/app/javascript/mastodon/features/filters/select_filter.jsx similarity index 100% rename from app/javascript/mastodon/features/filters/select_filter.js rename to app/javascript/mastodon/features/filters/select_filter.jsx diff --git a/app/javascript/mastodon/features/follow_recommendations/components/account.js b/app/javascript/mastodon/features/follow_recommendations/components/account.jsx similarity index 100% rename from app/javascript/mastodon/features/follow_recommendations/components/account.js rename to app/javascript/mastodon/features/follow_recommendations/components/account.jsx diff --git a/app/javascript/mastodon/features/follow_recommendations/index.js b/app/javascript/mastodon/features/follow_recommendations/index.jsx similarity index 100% rename from app/javascript/mastodon/features/follow_recommendations/index.js rename to app/javascript/mastodon/features/follow_recommendations/index.jsx diff --git a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js b/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx similarity index 100% rename from app/javascript/mastodon/features/follow_requests/components/account_authorize.js rename to app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx diff --git a/app/javascript/mastodon/features/follow_requests/index.js b/app/javascript/mastodon/features/follow_requests/index.jsx similarity index 100% rename from app/javascript/mastodon/features/follow_requests/index.js rename to app/javascript/mastodon/features/follow_requests/index.jsx diff --git a/app/javascript/mastodon/features/followed_tags/index.js b/app/javascript/mastodon/features/followed_tags/index.jsx similarity index 100% rename from app/javascript/mastodon/features/followed_tags/index.js rename to app/javascript/mastodon/features/followed_tags/index.jsx diff --git a/app/javascript/mastodon/features/followers/index.js b/app/javascript/mastodon/features/followers/index.jsx similarity index 100% rename from app/javascript/mastodon/features/followers/index.js rename to app/javascript/mastodon/features/followers/index.jsx diff --git a/app/javascript/mastodon/features/following/index.js b/app/javascript/mastodon/features/following/index.jsx similarity index 100% rename from app/javascript/mastodon/features/following/index.js rename to app/javascript/mastodon/features/following/index.jsx diff --git a/app/javascript/mastodon/features/generic_not_found/index.js b/app/javascript/mastodon/features/generic_not_found/index.jsx similarity index 100% rename from app/javascript/mastodon/features/generic_not_found/index.js rename to app/javascript/mastodon/features/generic_not_found/index.jsx diff --git a/app/javascript/mastodon/features/getting_started/components/announcements.js b/app/javascript/mastodon/features/getting_started/components/announcements.jsx similarity index 100% rename from app/javascript/mastodon/features/getting_started/components/announcements.js rename to app/javascript/mastodon/features/getting_started/components/announcements.jsx diff --git a/app/javascript/mastodon/features/getting_started/components/trends.js b/app/javascript/mastodon/features/getting_started/components/trends.jsx similarity index 100% rename from app/javascript/mastodon/features/getting_started/components/trends.js rename to app/javascript/mastodon/features/getting_started/components/trends.jsx diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.jsx similarity index 100% rename from app/javascript/mastodon/features/getting_started/index.js rename to app/javascript/mastodon/features/getting_started/index.jsx diff --git a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx similarity index 100% rename from app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js rename to app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.jsx similarity index 100% rename from app/javascript/mastodon/features/hashtag_timeline/index.js rename to app/javascript/mastodon/features/hashtag_timeline/index.jsx diff --git a/app/javascript/mastodon/features/home_timeline/components/column_settings.js b/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx similarity index 100% rename from app/javascript/mastodon/features/home_timeline/components/column_settings.js rename to app/javascript/mastodon/features/home_timeline/components/column_settings.jsx diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.jsx similarity index 100% rename from app/javascript/mastodon/features/home_timeline/index.js rename to app/javascript/mastodon/features/home_timeline/index.jsx diff --git a/app/javascript/mastodon/features/interaction_modal/index.js b/app/javascript/mastodon/features/interaction_modal/index.jsx similarity index 100% rename from app/javascript/mastodon/features/interaction_modal/index.js rename to app/javascript/mastodon/features/interaction_modal/index.jsx diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.js b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx similarity index 100% rename from app/javascript/mastodon/features/keyboard_shortcuts/index.js rename to app/javascript/mastodon/features/keyboard_shortcuts/index.jsx diff --git a/app/javascript/mastodon/features/list_adder/components/account.js b/app/javascript/mastodon/features/list_adder/components/account.jsx similarity index 100% rename from app/javascript/mastodon/features/list_adder/components/account.js rename to app/javascript/mastodon/features/list_adder/components/account.jsx diff --git a/app/javascript/mastodon/features/list_adder/components/list.js b/app/javascript/mastodon/features/list_adder/components/list.jsx similarity index 100% rename from app/javascript/mastodon/features/list_adder/components/list.js rename to app/javascript/mastodon/features/list_adder/components/list.jsx diff --git a/app/javascript/mastodon/features/list_adder/index.js b/app/javascript/mastodon/features/list_adder/index.jsx similarity index 100% rename from app/javascript/mastodon/features/list_adder/index.js rename to app/javascript/mastodon/features/list_adder/index.jsx diff --git a/app/javascript/mastodon/features/list_editor/components/account.js b/app/javascript/mastodon/features/list_editor/components/account.jsx similarity index 100% rename from app/javascript/mastodon/features/list_editor/components/account.js rename to app/javascript/mastodon/features/list_editor/components/account.jsx diff --git a/app/javascript/mastodon/features/list_editor/components/edit_list_form.js b/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx similarity index 100% rename from app/javascript/mastodon/features/list_editor/components/edit_list_form.js rename to app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx diff --git a/app/javascript/mastodon/features/list_editor/components/search.js b/app/javascript/mastodon/features/list_editor/components/search.jsx similarity index 100% rename from app/javascript/mastodon/features/list_editor/components/search.js rename to app/javascript/mastodon/features/list_editor/components/search.jsx diff --git a/app/javascript/mastodon/features/list_editor/index.js b/app/javascript/mastodon/features/list_editor/index.jsx similarity index 100% rename from app/javascript/mastodon/features/list_editor/index.js rename to app/javascript/mastodon/features/list_editor/index.jsx diff --git a/app/javascript/mastodon/features/list_timeline/index.js b/app/javascript/mastodon/features/list_timeline/index.jsx similarity index 100% rename from app/javascript/mastodon/features/list_timeline/index.js rename to app/javascript/mastodon/features/list_timeline/index.jsx diff --git a/app/javascript/mastodon/features/lists/components/new_list_form.js b/app/javascript/mastodon/features/lists/components/new_list_form.jsx similarity index 100% rename from app/javascript/mastodon/features/lists/components/new_list_form.js rename to app/javascript/mastodon/features/lists/components/new_list_form.jsx diff --git a/app/javascript/mastodon/features/lists/index.js b/app/javascript/mastodon/features/lists/index.jsx similarity index 100% rename from app/javascript/mastodon/features/lists/index.js rename to app/javascript/mastodon/features/lists/index.jsx diff --git a/app/javascript/mastodon/features/mutes/index.js b/app/javascript/mastodon/features/mutes/index.jsx similarity index 100% rename from app/javascript/mastodon/features/mutes/index.js rename to app/javascript/mastodon/features/mutes/index.jsx diff --git a/app/javascript/mastodon/features/notifications/components/clear_column_button.js b/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/clear_column_button.js rename to app/javascript/mastodon/features/notifications/components/clear_column_button.jsx diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/column_settings.js rename to app/javascript/mastodon/features/notifications/components/column_settings.jsx diff --git a/app/javascript/mastodon/features/notifications/components/filter_bar.js b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/filter_bar.js rename to app/javascript/mastodon/features/notifications/components/filter_bar.jsx diff --git a/app/javascript/mastodon/features/notifications/components/follow_request.js b/app/javascript/mastodon/features/notifications/components/follow_request.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/follow_request.js rename to app/javascript/mastodon/features/notifications/components/follow_request.jsx diff --git a/app/javascript/mastodon/features/notifications/components/grant_permission_button.js b/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/grant_permission_button.js rename to app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/notification.js rename to app/javascript/mastodon/features/notifications/components/notification.jsx diff --git a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.js b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/notifications_permission_banner.js rename to app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx diff --git a/app/javascript/mastodon/features/notifications/components/report.js b/app/javascript/mastodon/features/notifications/components/report.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/report.js rename to app/javascript/mastodon/features/notifications/components/report.jsx diff --git a/app/javascript/mastodon/features/notifications/components/setting_toggle.js b/app/javascript/mastodon/features/notifications/components/setting_toggle.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/components/setting_toggle.js rename to app/javascript/mastodon/features/notifications/components/setting_toggle.jsx diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.jsx similarity index 100% rename from app/javascript/mastodon/features/notifications/index.js rename to app/javascript/mastodon/features/notifications/index.jsx diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.js b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx similarity index 100% rename from app/javascript/mastodon/features/picture_in_picture/components/footer.js rename to app/javascript/mastodon/features/picture_in_picture/components/footer.jsx diff --git a/app/javascript/mastodon/features/picture_in_picture/components/header.js b/app/javascript/mastodon/features/picture_in_picture/components/header.jsx similarity index 100% rename from app/javascript/mastodon/features/picture_in_picture/components/header.js rename to app/javascript/mastodon/features/picture_in_picture/components/header.jsx diff --git a/app/javascript/mastodon/features/picture_in_picture/index.js b/app/javascript/mastodon/features/picture_in_picture/index.jsx similarity index 100% rename from app/javascript/mastodon/features/picture_in_picture/index.js rename to app/javascript/mastodon/features/picture_in_picture/index.jsx diff --git a/app/javascript/mastodon/features/pinned_statuses/index.js b/app/javascript/mastodon/features/pinned_statuses/index.jsx similarity index 100% rename from app/javascript/mastodon/features/pinned_statuses/index.js rename to app/javascript/mastodon/features/pinned_statuses/index.jsx diff --git a/app/javascript/mastodon/features/privacy_policy/index.js b/app/javascript/mastodon/features/privacy_policy/index.jsx similarity index 100% rename from app/javascript/mastodon/features/privacy_policy/index.js rename to app/javascript/mastodon/features/privacy_policy/index.jsx diff --git a/app/javascript/mastodon/features/public_timeline/components/column_settings.js b/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx similarity index 100% rename from app/javascript/mastodon/features/public_timeline/components/column_settings.js rename to app/javascript/mastodon/features/public_timeline/components/column_settings.jsx diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.jsx similarity index 100% rename from app/javascript/mastodon/features/public_timeline/index.js rename to app/javascript/mastodon/features/public_timeline/index.jsx diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.jsx similarity index 100% rename from app/javascript/mastodon/features/reblogs/index.js rename to app/javascript/mastodon/features/reblogs/index.jsx diff --git a/app/javascript/mastodon/features/report/category.js b/app/javascript/mastodon/features/report/category.jsx similarity index 100% rename from app/javascript/mastodon/features/report/category.js rename to app/javascript/mastodon/features/report/category.jsx diff --git a/app/javascript/mastodon/features/report/comment.js b/app/javascript/mastodon/features/report/comment.jsx similarity index 100% rename from app/javascript/mastodon/features/report/comment.js rename to app/javascript/mastodon/features/report/comment.jsx diff --git a/app/javascript/mastodon/features/report/components/option.js b/app/javascript/mastodon/features/report/components/option.jsx similarity index 100% rename from app/javascript/mastodon/features/report/components/option.js rename to app/javascript/mastodon/features/report/components/option.jsx diff --git a/app/javascript/mastodon/features/report/components/status_check_box.js b/app/javascript/mastodon/features/report/components/status_check_box.jsx similarity index 100% rename from app/javascript/mastodon/features/report/components/status_check_box.js rename to app/javascript/mastodon/features/report/components/status_check_box.jsx diff --git a/app/javascript/mastodon/features/report/rules.js b/app/javascript/mastodon/features/report/rules.jsx similarity index 100% rename from app/javascript/mastodon/features/report/rules.js rename to app/javascript/mastodon/features/report/rules.jsx diff --git a/app/javascript/mastodon/features/report/statuses.js b/app/javascript/mastodon/features/report/statuses.jsx similarity index 100% rename from app/javascript/mastodon/features/report/statuses.js rename to app/javascript/mastodon/features/report/statuses.jsx diff --git a/app/javascript/mastodon/features/report/thanks.js b/app/javascript/mastodon/features/report/thanks.jsx similarity index 100% rename from app/javascript/mastodon/features/report/thanks.js rename to app/javascript/mastodon/features/report/thanks.jsx diff --git a/app/javascript/mastodon/features/standalone/compose/index.js b/app/javascript/mastodon/features/standalone/compose/index.jsx similarity index 100% rename from app/javascript/mastodon/features/standalone/compose/index.js rename to app/javascript/mastodon/features/standalone/compose/index.jsx diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.jsx similarity index 100% rename from app/javascript/mastodon/features/status/components/action_bar.js rename to app/javascript/mastodon/features/status/components/action_bar.jsx diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.jsx similarity index 100% rename from app/javascript/mastodon/features/status/components/card.js rename to app/javascript/mastodon/features/status/components/card.jsx diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.jsx similarity index 100% rename from app/javascript/mastodon/features/status/components/detailed_status.js rename to app/javascript/mastodon/features/status/components/detailed_status.jsx diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.jsx similarity index 100% rename from app/javascript/mastodon/features/status/index.js rename to app/javascript/mastodon/features/status/index.jsx diff --git a/app/javascript/mastodon/features/subscribed_languages_modal/index.js b/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx similarity index 100% rename from app/javascript/mastodon/features/subscribed_languages_modal/index.js rename to app/javascript/mastodon/features/subscribed_languages_modal/index.jsx diff --git a/app/javascript/mastodon/features/ui/components/__tests__/column-test.js b/app/javascript/mastodon/features/ui/components/__tests__/column-test.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/__tests__/column-test.js rename to app/javascript/mastodon/features/ui/components/__tests__/column-test.jsx diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.js b/app/javascript/mastodon/features/ui/components/actions_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/actions_modal.js rename to app/javascript/mastodon/features/ui/components/actions_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/audio_modal.js b/app/javascript/mastodon/features/ui/components/audio_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/audio_modal.js rename to app/javascript/mastodon/features/ui/components/audio_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/block_modal.js b/app/javascript/mastodon/features/ui/components/block_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/block_modal.js rename to app/javascript/mastodon/features/ui/components/block_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/boost_modal.js rename to app/javascript/mastodon/features/ui/components/boost_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/bundle.js b/app/javascript/mastodon/features/ui/components/bundle.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/bundle.js rename to app/javascript/mastodon/features/ui/components/bundle.jsx diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.js b/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/bundle_column_error.js rename to app/javascript/mastodon/features/ui/components/bundle_column_error.jsx diff --git a/app/javascript/mastodon/features/ui/components/bundle_modal_error.js b/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/bundle_modal_error.js rename to app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx diff --git a/app/javascript/mastodon/features/ui/components/column.js b/app/javascript/mastodon/features/ui/components/column.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/column.js rename to app/javascript/mastodon/features/ui/components/column.jsx diff --git a/app/javascript/mastodon/features/ui/components/column_header.js b/app/javascript/mastodon/features/ui/components/column_header.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/column_header.js rename to app/javascript/mastodon/features/ui/components/column_header.jsx diff --git a/app/javascript/mastodon/features/ui/components/column_link.js b/app/javascript/mastodon/features/ui/components/column_link.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/column_link.js rename to app/javascript/mastodon/features/ui/components/column_link.jsx diff --git a/app/javascript/mastodon/features/ui/components/column_loading.js b/app/javascript/mastodon/features/ui/components/column_loading.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/column_loading.js rename to app/javascript/mastodon/features/ui/components/column_loading.jsx diff --git a/app/javascript/mastodon/features/ui/components/column_subheading.js b/app/javascript/mastodon/features/ui/components/column_subheading.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/column_subheading.js rename to app/javascript/mastodon/features/ui/components/column_subheading.jsx diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/columns_area.js rename to app/javascript/mastodon/features/ui/components/columns_area.jsx diff --git a/app/javascript/mastodon/features/ui/components/compare_history_modal.js b/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/compare_history_modal.js rename to app/javascript/mastodon/features/ui/components/compare_history_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.js b/app/javascript/mastodon/features/ui/components/compose_panel.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/compose_panel.js rename to app/javascript/mastodon/features/ui/components/compose_panel.jsx diff --git a/app/javascript/mastodon/features/ui/components/confirmation_modal.js b/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/confirmation_modal.js rename to app/javascript/mastodon/features/ui/components/confirmation_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/disabled_account_banner.js b/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/disabled_account_banner.js rename to app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx diff --git a/app/javascript/mastodon/features/ui/components/drawer_loading.js b/app/javascript/mastodon/features/ui/components/drawer_loading.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/drawer_loading.js rename to app/javascript/mastodon/features/ui/components/drawer_loading.jsx diff --git a/app/javascript/mastodon/features/ui/components/embed_modal.js b/app/javascript/mastodon/features/ui/components/embed_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/embed_modal.js rename to app/javascript/mastodon/features/ui/components/embed_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/filter_modal.js b/app/javascript/mastodon/features/ui/components/filter_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/filter_modal.js rename to app/javascript/mastodon/features/ui/components/filter_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/focal_point_modal.js b/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/focal_point_modal.js rename to app/javascript/mastodon/features/ui/components/focal_point_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.js b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/follow_requests_column_link.js rename to app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx diff --git a/app/javascript/mastodon/features/ui/components/header.js b/app/javascript/mastodon/features/ui/components/header.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/header.js rename to app/javascript/mastodon/features/ui/components/header.jsx diff --git a/app/javascript/mastodon/features/ui/components/image_loader.js b/app/javascript/mastodon/features/ui/components/image_loader.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/image_loader.js rename to app/javascript/mastodon/features/ui/components/image_loader.jsx diff --git a/app/javascript/mastodon/features/ui/components/image_modal.js b/app/javascript/mastodon/features/ui/components/image_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/image_modal.js rename to app/javascript/mastodon/features/ui/components/image_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/link_footer.js rename to app/javascript/mastodon/features/ui/components/link_footer.jsx diff --git a/app/javascript/mastodon/features/ui/components/list_panel.js b/app/javascript/mastodon/features/ui/components/list_panel.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/list_panel.js rename to app/javascript/mastodon/features/ui/components/list_panel.jsx diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/media_modal.js rename to app/javascript/mastodon/features/ui/components/media_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/modal_loading.js b/app/javascript/mastodon/features/ui/components/modal_loading.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/modal_loading.js rename to app/javascript/mastodon/features/ui/components/modal_loading.jsx diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/modal_root.js rename to app/javascript/mastodon/features/ui/components/modal_root.jsx diff --git a/app/javascript/mastodon/features/ui/components/mute_modal.js b/app/javascript/mastodon/features/ui/components/mute_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/mute_modal.js rename to app/javascript/mastodon/features/ui/components/mute_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/navigation_panel.js rename to app/javascript/mastodon/features/ui/components/navigation_panel.jsx diff --git a/app/javascript/mastodon/features/ui/components/report_modal.js b/app/javascript/mastodon/features/ui/components/report_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/report_modal.js rename to app/javascript/mastodon/features/ui/components/report_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.js b/app/javascript/mastodon/features/ui/components/sign_in_banner.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/sign_in_banner.js rename to app/javascript/mastodon/features/ui/components/sign_in_banner.jsx diff --git a/app/javascript/mastodon/features/ui/components/upload_area.js b/app/javascript/mastodon/features/ui/components/upload_area.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/upload_area.js rename to app/javascript/mastodon/features/ui/components/upload_area.jsx diff --git a/app/javascript/mastodon/features/ui/components/video_modal.js b/app/javascript/mastodon/features/ui/components/video_modal.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/video_modal.js rename to app/javascript/mastodon/features/ui/components/video_modal.jsx diff --git a/app/javascript/mastodon/features/ui/components/zoomable_image.js b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/components/zoomable_image.js rename to app/javascript/mastodon/features/ui/components/zoomable_image.jsx diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/index.js rename to app/javascript/mastodon/features/ui/index.jsx diff --git a/app/javascript/mastodon/features/ui/util/react_router_helpers.js b/app/javascript/mastodon/features/ui/util/react_router_helpers.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/util/react_router_helpers.js rename to app/javascript/mastodon/features/ui/util/react_router_helpers.jsx diff --git a/app/javascript/mastodon/features/ui/util/reduced_motion.js b/app/javascript/mastodon/features/ui/util/reduced_motion.jsx similarity index 100% rename from app/javascript/mastodon/features/ui/util/reduced_motion.js rename to app/javascript/mastodon/features/ui/util/reduced_motion.jsx diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.jsx similarity index 100% rename from app/javascript/mastodon/features/video/index.js rename to app/javascript/mastodon/features/video/index.jsx diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.jsx similarity index 100% rename from app/javascript/mastodon/main.js rename to app/javascript/mastodon/main.jsx diff --git a/app/javascript/mastodon/utils/icons.js b/app/javascript/mastodon/utils/icons.jsx similarity index 100% rename from app/javascript/mastodon/utils/icons.js rename to app/javascript/mastodon/utils/icons.jsx diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.jsx similarity index 100% rename from app/javascript/packs/admin.js rename to app/javascript/packs/admin.jsx diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.jsx similarity index 100% rename from app/javascript/packs/public.js rename to app/javascript/packs/public.jsx diff --git a/app/javascript/packs/share.js b/app/javascript/packs/share.jsx similarity index 100% rename from app/javascript/packs/share.js rename to app/javascript/packs/share.jsx diff --git a/config/webpacker.yml b/config/webpacker.yml index 4ad78a190e..0baff662b0 100644 --- a/config/webpacker.yml +++ b/config/webpacker.yml @@ -35,6 +35,7 @@ default: &default extensions: - .mjs - .js + - .jsx - .sass - .scss - .css diff --git a/package.json b/package.json index 57ee85b716..06af9045e9 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "start": "node ./streaming/index.js", "test": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:jest", "test:lint": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:lint:sass", - "test:lint:js": "eslint --ext=js . --cache --report-unused-disable-directives", + "test:lint:js": "eslint --ext=.js,.jsx . --cache --report-unused-disable-directives", "test:lint:sass": "stylelint \"**/*.{css,scss}\" && prettier --check \"**/*.{css,scss}\"", "test:jest": "cross-env NODE_ENV=test jest", "format": "prettier --write .",