diff --git a/locales/index.d.ts b/locales/index.d.ts index 0ae188f1f7..5755d038a7 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -3470,6 +3470,10 @@ export interface Locale extends ILocale { * ギャラリー */ "gallery": string; + /** + * ギャラリー(ノート) + */ + "galleryFromPosts": string; /** * 最近の投稿 */ diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 1b59708d85..11abf11ccd 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -863,6 +863,7 @@ configure: "設定する" postToGallery: "ギャラリーへ投稿" postToHashtag: "このハッシュタグで投稿" gallery: "ギャラリー" +galleryFromPosts: "ギャラリー(ノート)" recentPosts: "最近の投稿" popularPosts: "人気の投稿" shareWithNote: "ノートで共有" diff --git a/packages/frontend/src/pages/user/index.vue b/packages/frontend/src/pages/user/index.vue index d862387401..b9ce5ecdba 100644 --- a/packages/frontend/src/pages/user/index.vue +++ b/packages/frontend/src/pages/user/index.vue @@ -21,6 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only + @@ -51,6 +52,7 @@ const XLists = defineAsyncComponent(() => import('./lists.vue')); const XPages = defineAsyncComponent(() => import('./pages.vue')); const XFlashs = defineAsyncComponent(() => import('./flashs.vue')); const XGallery = defineAsyncComponent(() => import('./gallery.vue')); +const XGalleryFromPosts = defineAsyncComponent(() => import('./post-gallery.vue')); const XRaw = defineAsyncComponent(() => import('./raw.vue')); const CTX_USER = getServerContext('user'); @@ -134,6 +136,10 @@ const headerTabs = computed(() => user.value ? [{ key: 'gallery', title: i18n.ts.gallery, icon: 'ti ti-icons', +}, { + key: 'galleryFromPosts', + title: i18n.ts.galleryFromPosts, + icon: 'ti ti-icons', }, { key: 'raw', title: 'Raw', diff --git a/packages/frontend/src/pages/user/post-gallery.vue b/packages/frontend/src/pages/user/post-gallery.vue new file mode 100644 index 0000000000..de5f5c5af9 --- /dev/null +++ b/packages/frontend/src/pages/user/post-gallery.vue @@ -0,0 +1,113 @@ + + + + + + +