diff --git a/app/assets/javascripts/discourse/app/components/group-post.hbs b/app/assets/javascripts/discourse/app/components/group-post.hbs
deleted file mode 100644
index 089163a2e6a..00000000000
--- a/app/assets/javascripts/discourse/app/components/group-post.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- {{#if this.post.expandedExcerpt}}
- {{html-safe this.post.expandedExcerpt}}
- {{else}}
- {{html-safe this.post.excerpt}}
- {{/if}}
-
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/components/group-post.js b/app/assets/javascripts/discourse/app/components/group-post.js
deleted file mode 100644
index 7a6419f2106..00000000000
--- a/app/assets/javascripts/discourse/app/components/group-post.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import Component from "@ember/component";
-import { classNameBindings } from "@ember-decorators/component";
-import { propertyEqual } from "discourse/lib/computed";
-import { prioritizeNameInUx } from "discourse/lib/settings";
-import { userPath } from "discourse/lib/url";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
-import { i18n } from "discourse-i18n";
-
-@classNameBindings(
- ":user-stream-item",
- ":item",
- "moderatorAction",
- "primaryGroup"
-)
-export default class GroupPost extends Component {
- @propertyEqual("post.post_type", "site.post_types.moderator_action")
- moderatorAction;
-
- @discourseComputed("post.url")
- postUrl(url) {
- return getURL(url);
- }
-
- @discourseComputed("post.user")
- name(postUser) {
- if (prioritizeNameInUx(postUser.name)) {
- return postUser.name;
- }
- return postUser.username;
- }
-
- @discourseComputed("post.user")
- primaryGroup(postUser) {
- if (postUser.primary_group_name) {
- return `group-${postUser.primary_group_name}`;
- }
- }
-
- @discourseComputed("post.user.username")
- userUrl(username) {
- return userPath(username.toLowerCase());
- }
-
- @discourseComputed("post.title", "post.post_number")
- titleAriaLabel(title, postNumber) {
- return i18n("groups.aria_post_number", { postNumber, title });
- }
-}
diff --git a/app/assets/javascripts/discourse/app/components/post-list/index.gjs b/app/assets/javascripts/discourse/app/components/post-list/index.gjs
new file mode 100644
index 00000000000..0735faf18aa
--- /dev/null
+++ b/app/assets/javascripts/discourse/app/components/post-list/index.gjs
@@ -0,0 +1,85 @@
+/**
+ * A component that renders a list of posts
+ *
+ * @component PostList
+ *
+ * @args {Array