diff --git a/packages/frontend/src/components/TmsSuperMenu.impl.ts b/packages/frontend/src/components/TmsSuperMenu.impl.ts
new file mode 100644
index 000000000000..fb0d8fa4cd9c
--- /dev/null
+++ b/packages/frontend/src/components/TmsSuperMenu.impl.ts
@@ -0,0 +1,41 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export type TmsSuperMenuProps = {
+ readonly def: ISuperMenuDefinitions;
+ readonly wideMode?: boolean;
+};
+
+export type SuperMenuDisplayMode = 'default' | 'classic' | 'forceList';
+
+export type ISuperMenuDefinitions = {
+ readonly title?: string;
+ readonly items: ISuperMenuItem[];
+}[];
+
+type ISuperMenuItem = ISuperMenuItemButton | ISuperMenuItemA | ISuperMenuItemLink;
+
+type ISuperMenuItemBase = {
+ readonly icon: string;
+ readonly text: string;
+ readonly active?: boolean;
+ readonly danger?: boolean;
+};
+
+type ISuperMenuItemButton = ISuperMenuItemBase & {
+ readonly type: 'button';
+ readonly action: (ev: MouseEvent) => void;
+};
+
+type ISuperMenuItemA = ISuperMenuItemBase & {
+ readonly type: 'a';
+ readonly href: string;
+ readonly target: string;
+};
+
+type ISuperMenuItemLink = ISuperMenuItemBase & {
+ readonly type?: 'link';
+ readonly to: string;
+};
diff --git a/packages/frontend/src/components/MkSuperMenu.vue b/packages/frontend/src/components/TmsSuperMenu.vue
similarity index 97%
rename from packages/frontend/src/components/MkSuperMenu.vue
rename to packages/frontend/src/components/TmsSuperMenu.vue
index b576b03b34a0..5edcfc578804 100644
--- a/packages/frontend/src/components/MkSuperMenu.vue
+++ b/packages/frontend/src/components/TmsSuperMenu.vue
@@ -72,12 +72,9 @@ SPDX-License-Identifier: AGPL-3.0-only