-
-
+
+
+
+
+
+
+
+ (by )
+ {{ report.comment }}
+
+
+
-
- {{ i18n.ts.reporter }}: @{{ report.reporter.username }}
+
+
+
+
+
+ {{ i18n.ts.target }}:
+ #{{ report.targetUserId.toUpperCase() }}
+
+
+
+
+
+
+
+
+ {{ i18n.ts.details }}
+
+
+
+
+
+
+
+ {{ i18n.ts.reporter }}:
+ #{{ report.reporterId.toUpperCase() }}
+
+
+
+
+
+
+
+
+ {{ i18n.ts.moderationNote }}
+ {{ moderationNote.length > 0 ? '...' : i18n.ts.none }}
+
+
+ {{ i18n.ts.moderationNoteDescription }}
+
+
+
+
{{ i18n.ts.moderator }}:
-
-
-
- {{ i18n.ts.forwardReport }}
- {{ i18n.ts.forwardReportIsAnonymous }}
-
- {{ i18n.ts.abuseMarkAsResolved }}
-
-
+
-
diff --git a/packages/frontend/src/components/MkExtensionInstaller.stories.impl.ts b/packages/frontend/src/components/MkExtensionInstaller.stories.impl.ts
new file mode 100644
index 0000000000..6763f7c546
--- /dev/null
+++ b/packages/frontend/src/components/MkExtensionInstaller.stories.impl.ts
@@ -0,0 +1,83 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { StoryObj } from '@storybook/vue3';
+import MkExtensionInstaller from './MkExtensionInstaller.vue';
+import lightTheme from '@@/themes/_light.json5';
+
+export const Plugin = {
+ render(args) {
+ return {
+ components: {
+ MkExtensionInstaller,
+ },
+ setup() {
+ return {
+ args,
+ };
+ },
+ computed: {
+ props() {
+ return {
+ ...this.args,
+ };
+ },
+ },
+ template: '
',
+ };
+ },
+ args: {
+ extension: {
+ type: 'plugin',
+ raw: '"do nothing"',
+ meta: {
+ name: 'do nothing plugin',
+ version: '1.0',
+ author: 'syuilo and misskey-project',
+ description: 'a plugin that does nothing',
+ permissions: ['read:account'],
+ config: {
+ 'doNothing': true,
+ },
+ },
+ },
+ },
+ parameters: {
+ layout: 'centered',
+ },
+} satisfies StoryObj
;
+
+export const Theme = {
+ render(args) {
+ return {
+ components: {
+ MkExtensionInstaller,
+ },
+ setup() {
+ return {
+ args,
+ };
+ },
+ computed: {
+ props() {
+ return {
+ ...this.args,
+ };
+ },
+ },
+ template: '',
+ };
+ },
+ args: {
+ extension: {
+ type: 'theme',
+ raw: JSON.stringify(lightTheme),
+ meta: lightTheme,
+ },
+ },
+ parameters: {
+ layout: 'centered',
+ },
+} satisfies StoryObj;
diff --git a/packages/frontend/src/components/MkExtensionInstaller.vue b/packages/frontend/src/components/MkExtensionInstaller.vue
new file mode 100644
index 0000000000..0f7acd69e7
--- /dev/null
+++ b/packages/frontend/src/components/MkExtensionInstaller.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
{{ i18n.ts._externalResourceInstaller[`_${extension.type}`].title }}
+
{{ i18n.ts._externalResourceInstaller.checkVendorBeforeInstall }}
+
{{ i18n.ts._plugin.installWarn }}
+
+ {{ i18n.ts._externalResourceInstaller[`_${extension.type}`].metaTitle }}
+
+
+
+ {{ i18n.ts.name }}
+ {{ extension.meta.name }}
+
+
+ {{ i18n.ts.author }}
+ {{ extension.meta.author }}
+
+
+
+ {{ i18n.ts.description }}
+ {{ extension.meta.description ?? i18n.ts.none }}
+
+
+ {{ i18n.ts.version }}
+ {{ extension.meta.version }}
+
+
+ {{ i18n.ts.permission }}
+
+
+ - {{ i18n.ts._permissions[permission] }}
+
+ {{ i18n.ts.none }}
+
+
+
+ {{ i18n.ts._externalResourceInstaller._meta.base }}
+ {{ i18n.ts[extension.meta.base ?? 'none'] }}
+
+
+
+ {{ i18n.ts._plugin.viewSource }}
+
+
+
+
+
+
+
+ {{ i18n.ts.install }}
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/components/MkFolder.vue b/packages/frontend/src/components/MkFolder.vue
index a5f3069d45..8262ae5d0c 100644
--- a/packages/frontend/src/components/MkFolder.vue
+++ b/packages/frontend/src/components/MkFolder.vue
@@ -38,9 +38,12 @@ SPDX-License-Identifier: AGPL-3.0-only
>
-
+
+
+
+
@@ -59,9 +62,11 @@ import { defaultStore } from '@/store.js';
const props = withDefaults(defineProps<{
defaultOpen?: boolean;
maxHeight?: number | null;
+ withSpacer?: boolean;
}>(), {
defaultOpen: false,
maxHeight: null,
+ withSpacer: true,
});
const getBgColor = (el: HTMLElement) => {
diff --git a/packages/frontend/src/components/MkFukidashi.vue b/packages/frontend/src/components/MkFukidashi.vue
new file mode 100644
index 0000000000..09825487bf
--- /dev/null
+++ b/packages/frontend/src/components/MkFukidashi.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/components/MkMention.vue b/packages/frontend/src/components/MkMention.vue
index 9d9661e816..71bd5addfb 100644
--- a/packages/frontend/src/components/MkMention.vue
+++ b/packages/frontend/src/components/MkMention.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
+
@{{ username }}
@@ -16,7 +16,6 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
diff --git a/packages/frontend/src/components/MkSignin.passkey.vue b/packages/frontend/src/components/MkSignin.passkey.vue
new file mode 100644
index 0000000000..0d68955fab
--- /dev/null
+++ b/packages/frontend/src/components/MkSignin.passkey.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
{{ i18n.ts.useSecurityKey }}
+
+
+
{{ i18n.ts.retry }}
+
+
{{ i18n.ts.useTotp }}
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/components/MkSignin.password.vue b/packages/frontend/src/components/MkSignin.password.vue
new file mode 100644
index 0000000000..2d79e2aeb1
--- /dev/null
+++ b/packages/frontend/src/components/MkSignin.password.vue
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/components/MkSignin.totp.vue b/packages/frontend/src/components/MkSignin.totp.vue
new file mode 100644
index 0000000000..880c08315e
--- /dev/null
+++ b/packages/frontend/src/components/MkSignin.totp.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
{{ i18n.ts['2fa'] }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue
index 7942a84d66..26e1ac516c 100644
--- a/packages/frontend/src/components/MkSignin.vue
+++ b/packages/frontend/src/components/MkSignin.vue
@@ -4,239 +4,288 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
@@ -54,7 +60,6 @@ SPDX-License-Identifier: AGPL-3.0-only
diff --git a/packages/frontend/src/pages/settings/index.vue b/packages/frontend/src/pages/settings/index.vue
index 7d16740a3e..96a95f1635 100644
--- a/packages/frontend/src/pages/settings/index.vue
+++ b/packages/frontend/src/pages/settings/index.vue
@@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
diff --git a/packages/frontend/src/pages/settings/profile.vue b/packages/frontend/src/pages/settings/profile.vue
index 9e6cd04365..19c5d892de 100644
--- a/packages/frontend/src/pages/settings/profile.vue
+++ b/packages/frontend/src/pages/settings/profile.vue
@@ -46,14 +46,17 @@ SPDX-License-Identifier: AGPL-3.0-only