diff --git a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.gjs b/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.gjs
new file mode 100644
index 00000000000..b496b7e40d0
--- /dev/null
+++ b/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.gjs
@@ -0,0 +1,77 @@
+import Component from "@glimmer/component";
+import { action } from "@ember/object";
+import { service } from "@ember/service";
+import DButton from "discourse/components/d-button";
+import DismissReadModal from "discourse/components/modal/dismiss-read";
+import I18n from "discourse-i18n";
+
+export default class TopicDismissButtons extends Component {
+ @service currentUser;
+ @service modal;
+
+ get showBasedOnPosition() {
+ return this.args.position === "top" || this.args.model.topics.length > 5;
+ }
+
+ get dismissLabel() {
+ if (this.args.selectedTopics.length === 0) {
+ return I18n.t("topics.bulk.dismiss_button");
+ }
+
+ return I18n.t("topics.bulk.dismiss_button_with_selected", {
+ count: this.args.selectedTopics.length,
+ });
+ }
+
+ get dismissNewLabel() {
+ if (this.currentUser?.new_new_view_enabled) {
+ return I18n.t("topics.bulk.dismiss_button");
+ }
+
+ if (this.args.selectedTopics.length === 0) {
+ return I18n.t("topics.bulk.dismiss_new");
+ }
+
+ return I18n.t("topics.bulk.dismiss_new_with_selected", {
+ count: this.args.selectedTopics.length,
+ });
+ }
+
+ @action
+ dismissReadPosts() {
+ this.modal.show(DismissReadModal, {
+ model: {
+ title: this.args.selectedTopics.length
+ ? "topics.bulk.dismiss_read_with_selected"
+ : "topics.bulk.dismiss_read",
+ count: this.args.selectedTopics.length,
+ dismissRead: this.args.dismissRead,
+ },
+ });
+ }
+
+
+ {{~#if this.showBasedOnPosition~}}
+
+ {{~#if @showDismissRead~}}
+
+ {{~/if~}}
+ {{~#if @showResetNew~}}
+
+ {{~/if~}}
+
+ {{~/if~}}
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.hbs b/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.hbs
deleted file mode 100644
index a9aa1e91faa..00000000000
--- a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.hbs
+++ /dev/null
@@ -1,22 +0,0 @@
-{{~#if this.showBasedOnPosition}}
-
- {{~#if this.showDismissRead}}
-
- {{/if~}}
- {{~#if this.showResetNew}}
-
- {{/if~}}
-
-{{/if~}}
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.js b/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.js
deleted file mode 100644
index 18a3e6ba2d9..00000000000
--- a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.js
+++ /dev/null
@@ -1,78 +0,0 @@
-import Component from "@ember/component";
-import { action } from "@ember/object";
-import { service } from "@ember/service";
-import DismissReadModal from "discourse/components/modal/dismiss-read";
-import discourseComputed from "discourse-common/utils/decorators";
-import I18n from "discourse-i18n";
-
-export default Component.extend({
- tagName: "",
- classNames: ["topic-dismiss-buttons"],
-
- currentUser: service(),
- modal: service(),
-
- position: null,
- selectedTopics: null,
- model: null,
-
- @discourseComputed("position")
- containerClass(position) {
- return `dismiss-container-${position}`;
- },
-
- @discourseComputed("position")
- dismissReadId(position) {
- return `dismiss-topics-${position}`;
- },
-
- @discourseComputed("position")
- dismissNewId(position) {
- return `dismiss-new-${position}`;
- },
-
- @discourseComputed("position", "model.topics.length")
- showBasedOnPosition(position, topicCount) {
- if (position !== "top") {
- return topicCount > 5;
- }
- return true;
- },
-
- @discourseComputed("selectedTopics.length")
- dismissLabel(selectedTopicCount) {
- if (selectedTopicCount === 0) {
- return I18n.t("topics.bulk.dismiss_button");
- }
- return I18n.t("topics.bulk.dismiss_button_with_selected", {
- count: selectedTopicCount,
- });
- },
-
- @discourseComputed("selectedTopics.length")
- dismissNewLabel(selectedTopicCount) {
- if (this.currentUser?.new_new_view_enabled) {
- return I18n.t("topics.bulk.dismiss_button");
- } else if (selectedTopicCount === 0) {
- return I18n.t("topics.bulk.dismiss_new");
- }
- return I18n.t("topics.bulk.dismiss_new_with_selected", {
- count: selectedTopicCount,
- });
- },
-
- @action
- dismissReadPosts() {
- let dismissTitle = "topics.bulk.dismiss_read";
- if (this.selectedTopics.length) {
- dismissTitle = "topics.bulk.dismiss_read_with_selected";
- }
- this.modal.show(DismissReadModal, {
- model: {
- title: dismissTitle,
- count: this.selectedTopics.length,
- dismissRead: this.dismissRead,
- },
- });
- },
-});