cleaup app layout, add missing translations to it

This commit is contained in:
Prospector
2026-07-27 13:16:47 -07:00
parent 7c4190fb9c
commit d1411ff2cc
73 changed files with 393 additions and 495 deletions
+86 -192
View File
@@ -12,22 +12,18 @@ import {
ArrowBigUpDashIcon, ArrowBigUpDashIcon,
ChangeSkinIcon, ChangeSkinIcon,
CompassIcon, CompassIcon,
ExternalIcon,
HomeIcon, HomeIcon,
LeftArrowIcon, LeftArrowIcon,
LibraryIcon, LibraryIcon,
LogInIcon, LogInIcon,
LogOutIcon, LogOutIcon,
NewspaperIcon, NewspaperIcon,
NotepadTextIcon,
PlusIcon, PlusIcon,
RefreshCwIcon, RefreshCwIcon,
RightArrowIcon, RightArrowIcon,
ServerStackIcon, ServerStackIcon,
SettingsIcon, SettingsIcon,
UserIcon, UserIcon,
WorldIcon,
XIcon,
} from '@modrinth/assets' } from '@modrinth/assets'
import { import {
Admonition, Admonition,
@@ -39,6 +35,7 @@ import {
CreationFlowModal, CreationFlowModal,
defineMessages, defineMessages,
I18nDebugPanel, I18nDebugPanel,
IntlFormatted,
LoadingBar, LoadingBar,
NewsArticleCard, NewsArticleCard,
NotificationPanel, NotificationPanel,
@@ -63,7 +60,6 @@ import { fetch as tauriFetch } from '@tauri-apps/plugin-http'
import { openUrl } from '@tauri-apps/plugin-opener' import { openUrl } from '@tauri-apps/plugin-opener'
import { type } from '@tauri-apps/plugin-os' import { type } from '@tauri-apps/plugin-os'
import { saveWindowState, StateFlags } from '@tauri-apps/plugin-window-state' import { saveWindowState, StateFlags } from '@tauri-apps/plugin-window-state'
import { $fetch } from 'ofetch'
import { computed, onMounted, onUnmounted, provide, ref, watch } from 'vue' import { computed, onMounted, onUnmounted, provide, ref, watch } from 'vue'
import { RouterView, useRoute, useRouter } from 'vue-router' import { RouterView, useRoute, useRouter } from 'vue-router'
@@ -88,6 +84,7 @@ import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue' import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue'
import SharedInstanceInviteHandler from '@/components/ui/shared-instances/shared-instance-invite-handler/index.vue' import SharedInstanceInviteHandler from '@/components/ui/shared-instances/shared-instance-invite-handler/index.vue'
import SplashScreen from '@/components/ui/SplashScreen.vue' import SplashScreen from '@/components/ui/SplashScreen.vue'
import SurveyPopup from '@/components/ui/SurveyPopup.vue'
import WindowControls from '@/components/ui/WindowControls.vue' import WindowControls from '@/components/ui/WindowControls.vue'
import { useCheckDisableMouseover } from '@/composables/macCssFix.js' import { useCheckDisableMouseover } from '@/composables/macCssFix.js'
import { config } from '@/config' import { config } from '@/config'
@@ -104,12 +101,7 @@ import { check_reachable } from '@/helpers/auth.js'
import { get_user, get_version } from '@/helpers/cache.js' import { get_user, get_version } from '@/helpers/cache.js'
import { command_listener, notification_listener, warning_listener } from '@/helpers/events.js' import { command_listener, notification_listener, warning_listener } from '@/helpers/events.js'
import { install_create_modpack_instance, install_get_modpack_preview } from '@/helpers/install' import { install_create_modpack_instance, install_get_modpack_preview } from '@/helpers/install'
import { import { can_current_user_use_shared_instances, get as getInstance, run } from '@/helpers/instance'
can_current_user_use_shared_instances,
get as getInstance,
list,
run,
} from '@/helpers/instance'
import { get as getCreds, login, logout } from '@/helpers/mr_auth.ts' import { get as getCreds, login, logout } from '@/helpers/mr_auth.ts'
import { mergeUrlQuery, parseModrinthLink } from '@/helpers/project-links.ts' import { mergeUrlQuery, parseModrinthLink } from '@/helpers/project-links.ts'
import { get as getSettings, set as setSettings } from '@/helpers/settings.ts' import { get as getSettings, set as setSettings } from '@/helpers/settings.ts'
@@ -289,7 +281,6 @@ const {
} = setupProviders(notificationManager, popupNotificationManager) } = setupProviders(notificationManager, popupNotificationManager)
const news = ref([]) const news = ref([])
const availableSurvey = ref(false)
const displayedServerInviteNotifications = new Set() const displayedServerInviteNotifications = new Set()
const serverInvitePopupNotificationIds = new Set() const serverInvitePopupNotificationIds = new Set()
let liveNotificationGeneration = 0 let liveNotificationGeneration = 0
@@ -403,6 +394,54 @@ const messages = defineMessages({
id: 'app.ads-consent.accept', id: 'app.ads-consent.accept',
defaultMessage: 'Accept all', defaultMessage: 'Accept all',
}, },
home: {
id: 'app.nav.home',
defaultMessage: 'Home',
},
library: {
id: 'app.nav.library',
defaultMessage: 'Library',
},
modrinthHosting: {
id: 'app.nav.modrinth-hosting',
defaultMessage: 'Modrinth Hosting',
},
createNewInstance: {
id: 'app.nav.create-new-instance',
defaultMessage: 'Create new instance',
},
modrinthAccount: {
id: 'app.nav.modrinth-account',
defaultMessage: 'Modrinth account',
},
signedInAs: {
id: 'app.nav.signed-in-as',
defaultMessage: 'Signed in as <user>{username}</user>',
},
signInToModrinthAccount: {
id: 'app.nav.sign-in-to-modrinth-account',
defaultMessage: 'Sign in to a Modrinth account',
},
restarting: {
id: 'app.restarting',
defaultMessage: 'Restarting...',
},
upgradeToModrinthPlus: {
id: 'app.nav.upgrade-to-modrinth-plus',
defaultMessage: 'Upgrade to Modrinth+',
},
news: {
id: 'app.news.title',
defaultMessage: 'News',
},
viewAllNews: {
id: 'app.news.view-all',
defaultMessage: 'View all news',
},
playingAs: {
id: 'app.sidebar.playing-as',
defaultMessage: 'Playing as',
},
}) })
function handleAdsConsentRequired(required) { function handleAdsConsentRequired(required) {
@@ -571,12 +610,6 @@ async function setupApp() {
settings.pending_update_toast_for_version = null settings.pending_update_toast_for_version = null
await setSettings(settings) await setSettings(settings)
} }
if (osType === 'windows') {
await processPendingSurveys()
} else {
console.info('Skipping user surveys on non-Windows platforms')
}
} }
const stateFailed = ref(false) const stateFailed = ref(false)
@@ -1439,115 +1472,6 @@ function handleAuxClick(e) {
} }
} }
function cleanupOldSurveyDisplayData() {
const threeWeeksAgo = new Date()
threeWeeksAgo.setDate(threeWeeksAgo.getDate() - 21)
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i)
if (key.startsWith('survey-') && key.endsWith('-display')) {
const dateValue = new Date(localStorage.getItem(key))
if (dateValue < threeWeeksAgo) {
localStorage.removeItem(key)
}
}
}
}
async function openSurvey() {
if (!availableSurvey.value) {
console.error('No survey to open')
return
}
const creds = await getCreds().catch(handleError)
const userId = creds?.user_id
const formId = availableSurvey.value.tally_id
const popupOptions = {
layout: 'modal',
width: 700,
autoClose: 2000,
hideTitle: true,
hiddenFields: {
user_id: userId,
},
onOpen: () => console.info('Opened user survey'),
onClose: () => {
console.info('Closed user survey')
show_ads_window()
},
onSubmit: () => console.info('Active user survey submitted'),
}
try {
hide_ads_window()
if (window.Tally?.openPopup) {
console.info(`Opening Tally popup for user survey (form ID: ${formId})`)
dismissSurvey()
window.Tally.openPopup(formId, popupOptions)
} else {
console.warn('Tally script not yet loaded')
show_ads_window()
}
} catch (e) {
console.error('Error opening Tally popup:', e)
show_ads_window()
}
console.info(`Found user survey to show with tally_id: ${formId}`)
window.Tally.openPopup(formId, popupOptions)
}
function dismissSurvey() {
localStorage.setItem(`survey-${availableSurvey.value.id}-display`, new Date())
availableSurvey.value = undefined
}
async function processPendingSurveys() {
function isWithinLastTwoWeeks(date) {
const twoWeeksAgo = new Date()
twoWeeksAgo.setDate(twoWeeksAgo.getDate() - 14)
return date >= twoWeeksAgo
}
cleanupOldSurveyDisplayData()
const creds = await getCreds().catch(handleError)
const userId = creds?.user_id
const instances = (await list().catch(handleError)) ?? []
const isActivePlayer = instances.some(
(instance) =>
isWithinLastTwoWeeks(instance.last_played) && !isWithinLastTwoWeeks(instance.created),
)
let surveys = []
try {
surveys = await $fetch('https://api.modrinth.com/v2/surveys')
} catch (e) {
console.error('Error fetching surveys:', e)
}
const surveyToShow = surveys.find(
(survey) =>
!!(
localStorage.getItem(`survey-${survey.id}-display`) === null &&
survey.type === 'tally_app' &&
((survey.condition === 'active_player' && isActivePlayer) ||
(survey.assigned_users?.includes(userId) && !survey.dismissed_users?.includes(userId)))
),
)
if (surveyToShow) {
availableSurvey.value = surveyToShow
} else {
console.info('No user survey to show')
}
}
provideAppUpdateDownloadProgress(appUpdateDownload) provideAppUpdateDownloadProgress(appUpdateDownload)
</script> </script>
@@ -1570,7 +1494,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
class="flex items-center gap-4 text-contrast font-semibold text-xl select-none cursor-default" class="flex items-center gap-4 text-contrast font-semibold text-xl select-none cursor-default"
> >
<RefreshCwIcon data-tauri-drag-region class="animate-spin w-6 h-6" /> <RefreshCwIcon data-tauri-drag-region class="animate-spin w-6 h-6" />
Restarting... {{ formatMessage(messages.restarting) }}
</span> </span>
</div> </div>
</Transition> </Transition>
@@ -1595,25 +1519,22 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
<div <div
class="app-grid-navbar bg-bg-raised flex flex-col p-[0.5rem] pt-0 gap-[0.5rem] w-[--left-bar-width]" class="app-grid-navbar bg-bg-raised flex flex-col p-[0.5rem] pt-0 gap-[0.5rem] w-[--left-bar-width]"
> >
<NavButton v-tooltip.right="'Home'" to="/"> <NavButton v-tooltip.right="formatMessage(messages.home)" to="/">
<HomeIcon /> <HomeIcon />
</NavButton> </NavButton>
<NavButton v-if="themeStore.featureFlags.worlds_tab" v-tooltip.right="'Worlds'" to="/worlds">
<WorldIcon />
</NavButton>
<NavButton <NavButton
v-tooltip.right="'Discover content'" v-tooltip.right="formatMessage(commonMessages.discoverContentLabel)"
to="/browse/modpack" to="/browse/modpack"
:is-primary="() => route.path.startsWith('/browse') && !route.query.i" :is-primary="() => route.path.startsWith('/browse') && !route.query.i"
:is-subpage="(route) => route.path.startsWith('/project') && !route.query.i" :is-subpage="(route) => route.path.startsWith('/project') && !route.query.i"
> >
<CompassIcon /> <CompassIcon />
</NavButton> </NavButton>
<NavButton v-tooltip.right="'Skin selector'" to="/skins"> <NavButton v-tooltip.right="formatMessage(commonMessages.skinSelectorLabel)" to="/skins">
<ChangeSkinIcon /> <ChangeSkinIcon />
</NavButton> </NavButton>
<NavButton <NavButton
v-tooltip.right="'Library'" v-tooltip.right="formatMessage(messages.library)"
to="/library" to="/library"
:is-primary="(r) => r.path === '/library' || r.path === '/library'" :is-primary="(r) => r.path === '/library' || r.path === '/library'"
:is-subpage=" :is-subpage="
@@ -1626,7 +1547,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
<LibraryIcon /> <LibraryIcon />
</NavButton> </NavButton>
<NavButton <NavButton
v-tooltip.right="'Modrinth Hosting'" v-tooltip.right="formatMessage(messages.modrinthHosting)"
to="/hosting/manage" to="/hosting/manage"
:is-primary="(r) => r.path === '/hosting/manage' || r.path === '/hosting/manage/'" :is-primary="(r) => r.path === '/hosting/manage' || r.path === '/hosting/manage/'"
:is-subpage="(r) => r.path.startsWith('/hosting/manage/') && r.path !== '/hosting/manage/'" :is-subpage="(r) => r.path.startsWith('/hosting/manage/') && r.path !== '/hosting/manage/'"
@@ -1638,7 +1559,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
<QuickInstanceSwitcher /> <QuickInstanceSwitcher />
</suspense> </suspense>
<NavButton <NavButton
v-tooltip.right="'Create new instance'" v-tooltip.right="formatMessage(messages.createNewInstance)"
:to="() => installationModal?.show()" :to="() => installationModal?.show()"
:disabled="offline" :disabled="offline"
> >
@@ -1653,7 +1574,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
</NavButton> </NavButton>
<OverflowMenu <OverflowMenu
v-if="credentials?.user" v-if="credentials?.user"
v-tooltip.right="`Modrinth account`" v-tooltip.right="formatMessage(messages.modrinthAccount)"
class="w-12 h-12 text-primary rounded-full flex items-center justify-center text-2xl transition-all bg-transparent hover:bg-button-bg hover:text-contrast border-0 cursor-pointer" class="w-12 h-12 text-primary rounded-full flex items-center justify-center text-2xl transition-all bg-transparent hover:bg-button-bg hover:text-contrast border-0 cursor-pointer"
:options="[ :options="[
{ {
@@ -1672,19 +1593,27 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
<template #view-profile> <template #view-profile>
<UserIcon /> <UserIcon />
<span class="inline-flex items-center gap-1"> <span class="inline-flex items-center gap-1">
Signed in as <IntlFormatted
<span class="inline-flex items-center gap-1 text-contrast font-semibold"> :message-id="messages.signedInAs"
<Avatar :src="credentials?.user?.avatar_url" alt="" size="20px" circle /> :values="{ username: credentials?.user?.username }"
{{ credentials?.user?.username }} >
</span> <template #user="{ children }">
<span class="inline-flex items-center gap-1 text-contrast font-semibold">
<Avatar :src="credentials?.user?.avatar_url" alt="" size="20px" circle />
<component :is="() => children" />
</span>
</template>
</IntlFormatted>
</span> </span>
<ExternalIcon />
</template> </template>
<template #sign-out> <LogOutIcon /> Sign out </template> <template #sign-out>
<LogOutIcon />
{{ formatMessage(commonMessages.signOutButton) }}
</template>
</OverflowMenu> </OverflowMenu>
<NavButton <NavButton
v-else v-else
v-tooltip.right="'Sign in to a Modrinth account'" v-tooltip.right="formatMessage(messages.signInToModrinthAccount)"
:to="() => requestSignIn()" :to="() => requestSignIn()"
> >
<LogInIcon class="text-brand" /> <LogInIcon class="text-brand" />
@@ -1741,28 +1670,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
}" }"
> >
<div class="app-viewport flex-grow router-view"> <div class="app-viewport flex-grow router-view">
<transition name="popup-survey"> <SurveyPopup />
<div
v-if="availableSurvey"
class="w-[400px] z-20 fixed -bottom-12 pb-16 right-[--right-bar-width] mr-4 rounded-t-2xl card-shadow bg-bg-raised border-surface-5 border-[1px] border-solid border-b-0 p-4"
>
<h2 class="text-lg font-extrabold mt-0 mb-2">Hey there Modrinth user!</h2>
<p class="m-0 leading-tight">
Would you mind answering a few questions about your experience with Modrinth App?
</p>
<p class="mt-3 mb-4 leading-tight">
This feedback will go directly to the Modrinth team and help guide future updates!
</p>
<div class="flex gap-2">
<ButtonStyled color="brand">
<button @click="openSurvey"><NotepadTextIcon /> Take survey</button>
</ButtonStyled>
<ButtonStyled>
<button @click="dismissSurvey"><XIcon /> No thanks</button>
</ButtonStyled>
</div>
</div>
</transition>
<div <div
class="loading-indicator-container h-8 fixed z-50 pointer-events-none" class="loading-indicator-container h-8 fixed z-50 pointer-events-none"
:style="{ :style="{
@@ -1826,7 +1734,9 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
<div id="sidebar-teleport-target" class="sidebar-teleport-content"></div> <div id="sidebar-teleport-target" class="sidebar-teleport-content"></div>
<div class="sidebar-default-content" :class="{ 'sidebar-enabled': sidebarVisible }"> <div class="sidebar-default-content" :class="{ 'sidebar-enabled': sidebarVisible }">
<div class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid"> <div class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid">
<h3 class="text-base text-primary font-medium m-0">Playing as</h3> <h3 class="text-base text-primary font-medium m-0">
{{ formatMessage(messages.playingAs) }}
</h3>
<suspense> <suspense>
<AccountsCard ref="accounts" /> <AccountsCard ref="accounts" />
</suspense> </suspense>
@@ -1841,7 +1751,9 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid" class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid"
/> />
<div v-if="news && news.length > 0" class="p-4 flex flex-col items-center"> <div v-if="news && news.length > 0" class="p-4 flex flex-col items-center">
<h3 class="text-base mb-4 text-primary font-medium m-0 text-left w-full">News</h3> <h3 class="text-base mb-4 text-primary font-medium m-0 text-left w-full">
{{ formatMessage(messages.news) }}
</h3>
<div class="space-y-4 flex flex-col items-center w-full"> <div class="space-y-4 flex flex-col items-center w-full">
<NewsArticleCard <NewsArticleCard
v-for="(item, index) in news" v-for="(item, index) in news"
@@ -1850,7 +1762,8 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
/> />
<ButtonStyled color="brand" size="large"> <ButtonStyled color="brand" size="large">
<a href="https://modrinth.com/news" target="_blank" class="my-4"> <a href="https://modrinth.com/news" target="_blank" class="my-4">
<NewspaperIcon /> View all news <NewspaperIcon />
{{ formatMessage(messages.viewAllNews) }}
</a> </a>
</ButtonStyled> </ButtonStyled>
</div> </div>
@@ -1863,7 +1776,8 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
class="absolute bottom-[250px] w-full flex justify-center items-center gap-1 px-4 py-3 text-purple font-medium hover:underline z-10" class="absolute bottom-[250px] w-full flex justify-center items-center gap-1 px-4 py-3 text-purple font-medium hover:underline z-10"
target="_blank" target="_blank"
> >
<ArrowBigUpDashIcon class="text-2xl" /> Upgrade to Modrinth+ <ArrowBigUpDashIcon class="text-2xl" />
{{ formatMessage(messages.upgradeToModrinthPlus) }}
</a> </a>
<PromotionWrapper /> <PromotionWrapper />
</template> </template>
@@ -2075,26 +1989,6 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
display: contents; display: contents;
} }
.popup-survey-enter-active {
transition:
opacity 0.25s ease,
transform 0.25s cubic-bezier(0.51, 1.08, 0.35, 1.15);
transform-origin: top center;
}
.popup-survey-leave-active {
transition:
opacity 0.25s ease,
transform 0.25s cubic-bezier(0.68, -0.17, 0.23, 0.11);
transform-origin: top center;
}
.popup-survey-enter-from,
.popup-survey-leave-to {
opacity: 0;
transform: translateY(10rem) scale(0.8) scaleY(1.6);
}
@media (prefers-reduced-motion: no-preference) { @media (prefers-reduced-motion: no-preference) {
.nav-button-animated-enter-active { .nav-button-animated-enter-active {
transition: all 0.5s cubic-bezier(0.15, 1.4, 0.64, 0.96); transition: all 0.5s cubic-bezier(0.15, 1.4, 0.64, 0.96);
@@ -0,0 +1,233 @@
<script setup lang="ts">
import { NotepadTextIcon, XIcon } from '@modrinth/assets'
import { ButtonStyled, defineMessages, injectNotificationManager, useVIntl } from '@modrinth/ui'
import { type } from '@tauri-apps/plugin-os'
import { $fetch } from 'ofetch'
import { onMounted, ref } from 'vue'
import { hide_ads_window, show_ads_window } from '@/helpers/ads.js'
import { list } from '@/helpers/instance'
import { get as getCreds } from '@/helpers/mr_auth.ts'
type Survey = {
id: string
tally_id: string
type: string
condition?: string
assigned_users?: string[]
dismissed_users?: string[]
}
type TallyApi = {
openPopup: (formId: string, options: object) => void
}
const tallyWindow = window as Window & { Tally?: TallyApi }
const { formatMessage } = useVIntl()
const { handleError } = injectNotificationManager()
const availableSurvey = ref<Survey | null>(null)
const messages = defineMessages({
surveyTitle: {
id: 'app.survey.title',
defaultMessage: 'Hey there Modrinth user!',
},
surveyBody: {
id: 'app.survey.body',
defaultMessage:
'Would you mind answering a few questions about your experience with Modrinth App?',
},
surveyFooter: {
id: 'app.survey.footer',
defaultMessage:
'This feedback will go directly to the Modrinth team and help guide future updates!',
},
takeSurvey: {
id: 'app.survey.take-survey',
defaultMessage: 'Take survey',
},
surveyNoThanks: {
id: 'app.survey.no-thanks',
defaultMessage: 'No thanks',
},
})
function cleanupOldSurveyDisplayData() {
const threeWeeksAgo = new Date()
threeWeeksAgo.setDate(threeWeeksAgo.getDate() - 21)
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i)
if (key?.startsWith('survey-') && key.endsWith('-display')) {
const dateValue = new Date(localStorage.getItem(key) ?? '')
if (dateValue < threeWeeksAgo) {
localStorage.removeItem(key)
}
}
}
}
async function openSurvey() {
if (!availableSurvey.value) {
console.error('No survey to open')
return
}
const creds = await getCreds().catch(handleError)
const userId = creds?.user_id
const formId = availableSurvey.value.tally_id
const popupOptions = {
layout: 'modal',
width: 700,
autoClose: 2000,
hideTitle: true,
hiddenFields: {
user_id: userId,
},
onOpen: () => console.info('Opened user survey'),
onClose: () => {
console.info('Closed user survey')
show_ads_window()
},
onSubmit: () => console.info('Active user survey submitted'),
}
try {
hide_ads_window()
if (tallyWindow.Tally?.openPopup) {
console.info(`Opening Tally popup for user survey (form ID: ${formId})`)
dismissSurvey()
tallyWindow.Tally.openPopup(formId, popupOptions)
} else {
console.warn('Tally script not yet loaded')
show_ads_window()
}
} catch (e) {
console.error('Error opening Tally popup:', e)
show_ads_window()
}
console.info(`Found user survey to show with tally_id: ${formId}`)
tallyWindow.Tally?.openPopup(formId, popupOptions)
}
function dismissSurvey() {
if (!availableSurvey.value) return
localStorage.setItem(`survey-${availableSurvey.value.id}-display`, String(new Date()))
availableSurvey.value = null
}
async function processPendingSurveys() {
function isWithinLastTwoWeeks(date: string | Date | null | undefined) {
if (!date) return false
const twoWeeksAgo = new Date()
twoWeeksAgo.setDate(twoWeeksAgo.getDate() - 14)
return new Date(date) >= twoWeeksAgo
}
cleanupOldSurveyDisplayData()
const creds = await getCreds().catch(handleError)
const userId = creds?.user_id
const instances = (await list().catch(handleError)) ?? []
const isActivePlayer = instances.some(
(instance) =>
isWithinLastTwoWeeks(instance.last_played) && !isWithinLastTwoWeeks(instance.created),
)
let surveys: Survey[] = []
try {
surveys = await $fetch('https://api.modrinth.com/v2/surveys')
} catch (e) {
console.error('Error fetching surveys:', e)
}
const surveyToShow = surveys.find(
(survey) =>
!!(
localStorage.getItem(`survey-${survey.id}-display`) === null &&
survey.type === 'tally_app' &&
((survey.condition === 'active_player' && isActivePlayer) ||
(!!userId &&
survey.assigned_users?.includes(userId) &&
!survey.dismissed_users?.includes(userId)))
),
)
if (surveyToShow) {
availableSurvey.value = surveyToShow
} else {
console.info('No user survey to show')
}
}
onMounted(async () => {
const osType = await type()
if (osType === 'windows') {
await processPendingSurveys()
} else {
console.info('Skipping user surveys on non-Windows platforms')
}
})
</script>
<template>
<transition name="popup-survey">
<div
v-if="availableSurvey"
class="w-[400px] z-20 fixed -bottom-12 pb-16 right-[--right-bar-width] mr-4 rounded-t-2xl card-shadow bg-bg-raised border-surface-5 border-[1px] border-solid border-b-0 p-4"
>
<h2 class="text-lg font-extrabold mt-0 mb-2">
{{ formatMessage(messages.surveyTitle) }}
</h2>
<p class="m-0 leading-tight">
{{ formatMessage(messages.surveyBody) }}
</p>
<p class="mt-3 mb-4 leading-tight">
{{ formatMessage(messages.surveyFooter) }}
</p>
<div class="flex gap-2">
<ButtonStyled color="brand">
<button @click="openSurvey">
<NotepadTextIcon />
{{ formatMessage(messages.takeSurvey) }}
</button>
</ButtonStyled>
<ButtonStyled>
<button @click="dismissSurvey">
<XIcon />
{{ formatMessage(messages.surveyNoThanks) }}
</button>
</ButtonStyled>
</div>
</div>
</transition>
</template>
<style scoped>
.popup-survey-enter-active {
transition:
opacity 0.25s ease,
transform 0.25s cubic-bezier(0.51, 1.08, 0.35, 1.15);
transform-origin: top center;
}
.popup-survey-leave-active {
transition:
opacity 0.25s ease,
transform 0.25s cubic-bezier(0.68, -0.17, 0.23, 0.11);
transform-origin: top center;
}
.popup-survey-enter-from,
.popup-survey-leave-to {
opacity: 0;
transform: translateY(10rem) scale(0.8) scaleY(1.6);
}
</style>
@@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { LoaderCircleIcon } from '@modrinth/assets' import { LoaderCircleIcon } from '@modrinth/assets'
import type { GameVersion } from '@modrinth/ui' import type { GameVersion } from '@modrinth/ui'
import { GAME_MODES, HeadingLink, injectNotificationManager } from '@modrinth/ui' import { GAME_MODES, injectNotificationManager } from '@modrinth/ui'
import { platform } from '@tauri-apps/plugin-os' import { platform } from '@tauri-apps/plugin-os'
import type { Dayjs } from 'dayjs' import type { Dayjs } from 'dayjs'
import dayjs from 'dayjs' import dayjs from 'dayjs'
@@ -268,13 +268,7 @@ onUnmounted(() => {
</div> </div>
</div> </div>
<div v-else-if="jumpBackInItems.length > 0" class="flex flex-col gap-2"> <div v-else-if="jumpBackInItems.length > 0" class="flex flex-col gap-2">
<HeadingLink v-if="theme.getFeatureFlag('worlds_tab')" to="/worlds" class="mt-1"> <span class="flex mt-1 mb-3 leading-none items-center gap-1 text-primary text-lg font-bold">
Jump back in
</HeadingLink>
<span
v-else
class="flex mt-1 mb-3 leading-none items-center gap-1 text-primary text-lg font-bold"
>
Jump back in Jump back in
</span> </span>
<div class="grid-when-huge flex flex-col w-full gap-2"> <div class="grid-when-huge flex flex-col w-full gap-2">
@@ -236,9 +236,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "العودة للنموذج" "message": "العودة للنموذج"
}, },
"app.browse.discover-content": {
"message": "استكشف محتوى"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "استكشف خوادم" "message": "استكشف خوادم"
}, },
@@ -656,9 +653,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "الرجاء تسجيل الدخول" "message": "الرجاء تسجيل الدخول"
}, },
"app.skins.title": {
"message": "اختيار المظهر"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "إيقاف" "message": "إيقاف"
}, },
@@ -167,9 +167,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Zpět k instanci" "message": "Zpět k instanci"
}, },
"app.browse.discover-content": {
"message": "Objevit obsah"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Objevit servery" "message": "Objevit servery"
}, },
@@ -569,9 +566,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Přihlaš se prosím" "message": "Přihlaš se prosím"
}, },
"app.skins.title": {
"message": "Výběr skinu"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "Stahování Modrinth App v{version} bylo dokončeno. Aktualizujte ji znovunačtením nebo se automaticky aktualizuje po zavření." "message": "Stahování Modrinth App v{version} bylo dokončeno. Aktualizujte ji znovunačtením nebo se automaticky aktualizuje po zavření."
}, },
@@ -221,9 +221,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Tilbage til instance" "message": "Tilbage til instance"
}, },
"app.browse.discover-content": {
"message": "Opdag indhold"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Opdag servere" "message": "Opdag servere"
}, },
@@ -617,9 +614,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Venligst log ind" "message": "Venligst log ind"
}, },
"app.skins.title": {
"message": "Skin vælger"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Slå fra" "message": "Slå fra"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Zu Instanz zurückgehen" "message": "Zu Instanz zurückgehen"
}, },
"app.browse.discover-content": {
"message": "Inhalte entdecken"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Server entdecken" "message": "Server entdecken"
}, },
@@ -881,9 +878,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Bitte anmelden" "message": "Bitte anmelden"
}, },
"app.skins.title": {
"message": "Skin-Auswahl"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Deaktivieren" "message": "Deaktivieren"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Zurück zur Instanz" "message": "Zurück zur Instanz"
}, },
"app.browse.discover-content": {
"message": "Inhalte entdecken"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Server entdecken" "message": "Server entdecken"
}, },
@@ -881,9 +878,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Bitte melde dich an" "message": "Bitte melde dich an"
}, },
"app.skins.title": {
"message": "Skin-Auswahl"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Deaktivieren" "message": "Deaktivieren"
}, },
+51 -6
View File
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Back to instance" "message": "Back to instance"
}, },
"app.browse.discover-content": {
"message": "Discover content"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Discover servers" "message": "Discover servers"
}, },
@@ -683,6 +680,36 @@
"app.modal.update-to-play.update-required-description": { "app.modal.update-to-play.update-required-description": {
"message": "An update is required to play {name}. Please update to latest version to launch the game." "message": "An update is required to play {name}. Please update to latest version to launch the game."
}, },
"app.nav.create-new-instance": {
"message": "Create new instance"
},
"app.nav.home": {
"message": "Home"
},
"app.nav.library": {
"message": "Library"
},
"app.nav.modrinth-account": {
"message": "Modrinth account"
},
"app.nav.modrinth-hosting": {
"message": "Modrinth Hosting"
},
"app.nav.sign-in-to-modrinth-account": {
"message": "Sign in to a Modrinth account"
},
"app.nav.signed-in-as": {
"message": "Signed in as <user>{username}</user>"
},
"app.nav.upgrade-to-modrinth-plus": {
"message": "Upgrade to Modrinth+"
},
"app.news.title": {
"message": "News"
},
"app.news.view-all": {
"message": "View all news"
},
"app.project.install-button.already-installed": { "app.project.install-button.already-installed": {
"message": "This project is already installed" "message": "This project is already installed"
}, },
@@ -710,6 +737,9 @@
"app.resource-management-settings.always-show-copy-details.title": { "app.resource-management-settings.always-show-copy-details.title": {
"message": "Always show copy details" "message": "Always show copy details"
}, },
"app.restarting": {
"message": "Restarting..."
},
"app.settings.developer-mode-enabled": { "app.settings.developer-mode-enabled": {
"message": "Developer mode enabled." "message": "Developer mode enabled."
}, },
@@ -737,6 +767,9 @@
"app.settings.tabs.resource-management": { "app.settings.tabs.resource-management": {
"message": "Resource management" "message": "Resource management"
}, },
"app.sidebar.playing-as": {
"message": "Playing as"
},
"app.skins.add-button": { "app.skins.add-button": {
"message": "Add skin" "message": "Add skin"
}, },
@@ -887,15 +920,27 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Please sign in" "message": "Please sign in"
}, },
"app.skins.title": {
"message": "Skin selector"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Toggle off" "message": "Toggle off"
}, },
"app.skins.toggle-ears-features-on": { "app.skins.toggle-ears-features-on": {
"message": "Toggle on" "message": "Toggle on"
}, },
"app.survey.body": {
"message": "Would you mind answering a few questions about your experience with Modrinth App?"
},
"app.survey.footer": {
"message": "This feedback will go directly to the Modrinth team and help guide future updates!"
},
"app.survey.no-thanks": {
"message": "No thanks"
},
"app.survey.take-survey": {
"message": "Take survey"
},
"app.survey.title": {
"message": "Hey there Modrinth user!"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "Modrinth App v{version} has finished downloading. Reload to update now, or automatically when you close Modrinth App." "message": "Modrinth App v{version} has finished downloading. Reload to update now, or automatically when you close Modrinth App."
}, },
@@ -227,9 +227,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Volver a instancia" "message": "Volver a instancia"
}, },
"app.browse.discover-content": {
"message": "Descubrir contenido"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Descubrir servidores" "message": "Descubrir servidores"
}, },
@@ -656,9 +653,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Por favor, inicia sesión" "message": "Por favor, inicia sesión"
}, },
"app.skins.title": {
"message": "Selector de skin"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "La descarga de la Modrinth App v{version} ha finalizado. Actualiza ahora o automáticamente al cerrar la Modrinth App." "message": "La descarga de la Modrinth App v{version} ha finalizado. Actualiza ahora o automáticamente al cerrar la Modrinth App."
}, },
@@ -161,9 +161,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Volver a la instancia" "message": "Volver a la instancia"
}, },
"app.browse.discover-content": {
"message": "Descubrir contenido"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Descubrir servidores" "message": "Descubrir servidores"
}, },
@@ -461,9 +458,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Por favor, inicia sesión" "message": "Por favor, inicia sesión"
}, },
"app.skins.title": {
"message": "Selector de Skin"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "Modrinth App v{version} se ha descargado. Actualiza la página ahora o espera a que se actualice automáticamente al cerrar Modrinth App." "message": "Modrinth App v{version} se ha descargado. Actualiza la página ahora o espera a que se actualice automáticamente al cerrar Modrinth App."
}, },
@@ -173,9 +173,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Takaisin instanssiin" "message": "Takaisin instanssiin"
}, },
"app.browse.discover-content": {
"message": "Löydä sisältöä"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Löydä palvelimia" "message": "Löydä palvelimia"
}, },
@@ -566,9 +563,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Kirjaudu sisään" "message": "Kirjaudu sisään"
}, },
"app.skins.title": {
"message": "Skinivalinta"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Poista käytöstä" "message": "Poista käytöstä"
}, },
@@ -140,9 +140,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Bumalik sa instansiya" "message": "Bumalik sa instansiya"
}, },
"app.browse.discover-content": {
"message": "Tumuklas ng kontento"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Tumuklas ng mga server" "message": "Tumuklas ng mga server"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Retour à l'instance" "message": "Retour à l'instance"
}, },
"app.browse.discover-content": {
"message": "Découvrir du contenu"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Découvrir des serveurs" "message": "Découvrir des serveurs"
}, },
@@ -881,9 +878,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Veuillez vous connecter" "message": "Veuillez vous connecter"
}, },
"app.skins.title": {
"message": "Sélecteur de skin"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Désactiver" "message": "Désactiver"
}, },
@@ -44,9 +44,6 @@
"app.browse.already-added": { "app.browse.already-added": {
"message": "כבר נוסף" "message": "כבר נוסף"
}, },
"app.browse.discover-content": {
"message": "גלה תוכן"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "גלה שרתים" "message": "גלה שרתים"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Vissza a játékpéldányhoz" "message": "Vissza a játékpéldányhoz"
}, },
"app.browse.discover-content": {
"message": "Tartalom böngészése"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Szerverek böngészése" "message": "Szerverek böngészése"
}, },
@@ -818,9 +815,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Kérlek jelentkezz be" "message": "Kérlek jelentkezz be"
}, },
"app.skins.title": {
"message": "Kinézetváltó"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Kikapcsolás" "message": "Kikapcsolás"
}, },
@@ -140,9 +140,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Kembali ke instans" "message": "Kembali ke instans"
}, },
"app.browse.discover-content": {
"message": "Temukan konten"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Temukan server" "message": "Temukan server"
}, },
@@ -437,9 +434,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Silakan masuk" "message": "Silakan masuk"
}, },
"app.skins.title": {
"message": "Pemilih rupa"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "Modrinth App v{version} telah selesai mengunduh. Muat ulang untuk memperbarui sekarang, atau secara otomatis saat Anda menutup Modrinth App." "message": "Modrinth App v{version} telah selesai mengunduh. Muat ulang untuk memperbarui sekarang, atau secara otomatis saat Anda menutup Modrinth App."
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Torna all'istanza" "message": "Torna all'istanza"
}, },
"app.browse.discover-content": {
"message": "Esplora i contenuti"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Sfoglia i server" "message": "Sfoglia i server"
}, },
@@ -878,9 +875,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Effettua l'accesso" "message": "Effettua l'accesso"
}, },
"app.skins.title": {
"message": "Seleziona una skin"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Disattiva" "message": "Disattiva"
}, },
@@ -242,9 +242,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "インスタンスに戻る" "message": "インスタンスに戻る"
}, },
"app.browse.discover-content": {
"message": "コンテンツを探す"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "サーバーを探す" "message": "サーバーを探す"
}, },
@@ -851,9 +848,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "サインインしてください" "message": "サインインしてください"
}, },
"app.skins.title": {
"message": "スキンセレクター"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "オフに切り替え" "message": "オフに切り替え"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "인스턴스로 돌아가기" "message": "인스턴스로 돌아가기"
}, },
"app.browse.discover-content": {
"message": "콘텐츠 탐색하기"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "서버 탐색하기" "message": "서버 탐색하기"
}, },
@@ -827,9 +824,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "로그인하세요" "message": "로그인하세요"
}, },
"app.skins.title": {
"message": "스킨 선택"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "끄기" "message": "끄기"
}, },
@@ -137,9 +137,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Kembali ke pemasangan" "message": "Kembali ke pemasangan"
}, },
"app.browse.discover-content": {
"message": "Temui kandungan"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Temui pelayan" "message": "Temui pelayan"
}, },
@@ -410,9 +407,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Sila daftar masuk" "message": "Sila daftar masuk"
}, },
"app.skins.title": {
"message": "Pemilih kekulit"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "Modrinth App v{version} sudah selesai dimuat turun! Muat semula untuk kemas kini sekarang, atau kemas kini secara automatik apabila anda menutup Modrinth App." "message": "Modrinth App v{version} sudah selesai dimuat turun! Muat semula untuk kemas kini sekarang, atau kemas kini secara automatik apabila anda menutup Modrinth App."
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Terug naar instantie" "message": "Terug naar instantie"
}, },
"app.browse.discover-content": {
"message": "Inhoud ontdekken"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Ontdek servers" "message": "Ontdek servers"
}, },
@@ -881,9 +878,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Graag inloggen" "message": "Graag inloggen"
}, },
"app.skins.title": {
"message": "Skinkiezer"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Uitschakelen" "message": "Uitschakelen"
}, },
@@ -143,9 +143,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Tilbake til tilfelle" "message": "Tilbake til tilfelle"
}, },
"app.browse.discover-content": {
"message": "Oppdag innhold"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Oppdag servere" "message": "Oppdag servere"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Powrót do instancji" "message": "Powrót do instancji"
}, },
"app.browse.discover-content": {
"message": "Odkrywaj zawartość"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Odkryj serwery" "message": "Odkryj serwery"
}, },
@@ -815,9 +812,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Zaloguj się" "message": "Zaloguj się"
}, },
"app.skins.title": {
"message": "Wybór skórki"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Wyłącz" "message": "Wyłącz"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Voltar à instância" "message": "Voltar à instância"
}, },
"app.browse.discover-content": {
"message": "Descobrir conteúdo"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Descobrir servidores" "message": "Descobrir servidores"
}, },
@@ -881,9 +878,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Inicie a sessão" "message": "Inicie a sessão"
}, },
"app.skins.title": {
"message": "Seletor de skins"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Desativar" "message": "Desativar"
}, },
@@ -242,9 +242,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Voltar à instância" "message": "Voltar à instância"
}, },
"app.browse.discover-content": {
"message": "Descobrir conteúdo"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Descobrir servidores" "message": "Descobrir servidores"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Вернуться к сборке" "message": "Вернуться к сборке"
}, },
"app.browse.discover-content": {
"message": "Поиск проектов"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Поиск серверов" "message": "Поиск серверов"
}, },
@@ -821,9 +818,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Войдите" "message": "Войдите"
}, },
"app.skins.title": {
"message": "Выбор скина"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Выключить" "message": "Выключить"
}, },
@@ -227,9 +227,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Nazad na instancu" "message": "Nazad na instancu"
}, },
"app.browse.discover-content": {
"message": "Otkrij sadržaj"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Otkrij servere" "message": "Otkrij servere"
}, },
@@ -656,9 +653,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Molimo prijavi se" "message": "Molimo prijavi se"
}, },
"app.skins.title": {
"message": "Selektor skina"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "Preuzimanje Modrinth aplikacije v{version} je završeno. Ponovo učitaj da bi ažurirao sada ili automatski kada zatvoriš Modrinth aplikaciju." "message": "Preuzimanje Modrinth aplikacije v{version} je završeno. Ponovo učitaj da bi ažurirao sada ili automatski kada zatvoriš Modrinth aplikaciju."
}, },
@@ -227,9 +227,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Tillbaka till instans" "message": "Tillbaka till instans"
}, },
"app.browse.discover-content": {
"message": "Upptäck innehåll"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Upptäck servrar" "message": "Upptäck servrar"
}, },
@@ -767,9 +764,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Vänligen logga in" "message": "Vänligen logga in"
}, },
"app.skins.title": {
"message": "Utseende väljare"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "Modrinth App v{version} har laddats ner. Ladda om för att uppdatera nu, eller automatiskt när du stänger Modrinth App." "message": "Modrinth App v{version} har laddats ner. Ladda om för att uppdatera nu, eller automatiskt när du stänger Modrinth App."
}, },
@@ -155,9 +155,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "กลับสู่อินสแตนซ์" "message": "กลับสู่อินสแตนซ์"
}, },
"app.browse.discover-content": {
"message": "สำรวจเนื้อหา"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "สำรวจเซิร์ฟเวอร์" "message": "สำรวจเซิร์ฟเวอร์"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Kuruluma dön" "message": "Kuruluma dön"
}, },
"app.browse.discover-content": {
"message": "İçerik keşfet"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Sunucuları keşfet" "message": "Sunucuları keşfet"
}, },
@@ -758,9 +755,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Lütfen giriş yapın" "message": "Lütfen giriş yapın"
}, },
"app.skins.title": {
"message": "Skin seçici"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Kapat" "message": "Kapat"
}, },
@@ -242,9 +242,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Назад до профілю" "message": "Назад до профілю"
}, },
"app.browse.discover-content": {
"message": "Дослідити вміст"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Дослідити сервери" "message": "Дослідити сервери"
}, },
@@ -830,9 +827,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Увійдіть" "message": "Увійдіть"
}, },
"app.skins.title": {
"message": "Вибір скіну"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "Вимкнути" "message": "Вимкнути"
}, },
@@ -236,9 +236,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "Quay lại phiên bản" "message": "Quay lại phiên bản"
}, },
"app.browse.discover-content": {
"message": "Khám phá nội dung"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "Khám phá máy chủ" "message": "Khám phá máy chủ"
}, },
@@ -614,9 +611,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "Đăng nhập đã" "message": "Đăng nhập đã"
}, },
"app.skins.title": {
"message": "Đổi skin"
},
"app.update-popup.body.download-complete": { "app.update-popup.body.download-complete": {
"message": "Phiên bản v{version} của Modrinth đã sẵn sàng để có thể cài đặt. Khởi động lại ứng dụng để cập nhật ngay bây giờ, hoặc tự động cập nhật sau khi bạn tắt Modrinth." "message": "Phiên bản v{version} của Modrinth đã sẵn sàng để có thể cài đặt. Khởi động lại ứng dụng để cập nhật ngay bây giờ, hoặc tự động cập nhật sau khi bạn tắt Modrinth."
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "返回实例" "message": "返回实例"
}, },
"app.browse.discover-content": {
"message": "发现内容"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "发现服务器" "message": "发现服务器"
}, },
@@ -881,9 +878,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "请登录" "message": "请登录"
}, },
"app.skins.title": {
"message": "皮肤选择器"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "切换至关" "message": "切换至关"
}, },
@@ -245,9 +245,6 @@
"app.browse.back-to-instance": { "app.browse.back-to-instance": {
"message": "回到實例" "message": "回到實例"
}, },
"app.browse.discover-content": {
"message": "探索內容"
},
"app.browse.discover-servers": { "app.browse.discover-servers": {
"message": "探索伺服器" "message": "探索伺服器"
}, },
@@ -881,9 +878,6 @@
"app.skins.sign-in.title": { "app.skins.sign-in.title": {
"message": "請登入" "message": "請登入"
}, },
"app.skins.title": {
"message": "外觀選擇工具"
},
"app.skins.toggle-ears-features-off": { "app.skins.toggle-ears-features-off": {
"message": "關閉" "message": "關閉"
}, },
+4 -6
View File
@@ -385,10 +385,6 @@ const messages = defineMessages({
id: 'app.browse.add-to-an-instance', id: 'app.browse.add-to-an-instance',
defaultMessage: 'Add to an instance', defaultMessage: 'Add to an instance',
}, },
discoverContent: {
id: 'app.browse.discover-content',
defaultMessage: 'Discover content',
},
discoverServers: { discoverServers: {
id: 'app.browse.discover-servers', id: 'app.browse.discover-servers',
defaultMessage: 'Discover servers', defaultMessage: 'Discover servers',
@@ -450,7 +446,9 @@ const messages = defineMessages({
const breadcrumbs = useBreadcrumbs() const breadcrumbs = useBreadcrumbs()
const browseTitle = computed(() => const browseTitle = computed(() =>
formatMessage(isFromWorlds.value ? messages.discoverServers : messages.discoverContent), formatMessage(
isFromWorlds.value ? messages.discoverServers : commonMessages.discoverContentLabel,
),
) )
breadcrumbs.setName('BrowseTitle', browseTitle.value) breadcrumbs.setName('BrowseTitle', browseTitle.value)
if (instance.value) { if (instance.value) {
@@ -484,7 +482,7 @@ function resetInstanceContext() {
hiddenInstanceProjectIds.value = new Set() hiddenInstanceProjectIds.value = new Set()
hiddenInstanceProjectIdsInitialized.value = false hiddenInstanceProjectIdsInitialized.value = false
isServerInstance.value = false isServerInstance.value = false
breadcrumbs.setName('BrowseTitle', formatMessage(messages.discoverContent)) breadcrumbs.setName('BrowseTitle', formatMessage(commonMessages.discoverContentLabel))
breadcrumbs.setContext(null) breadcrumbs.setContext(null)
} }
+1 -5
View File
@@ -68,10 +68,6 @@ const PENDING_SKIN_REFRESH_DELAY_MS = 11_000
const DEFAULT_SKIN_SECTION_SORT_ORDER = ['Default skins', 'Modrinth Pride'] const DEFAULT_SKIN_SECTION_SORT_ORDER = ['Default skins', 'Modrinth Pride']
const EARS_NOTICE_PLACEHOLDER = '__EARS_MOD_NAME__' const EARS_NOTICE_PLACEHOLDER = '__EARS_MOD_NAME__'
const messages = defineMessages({ const messages = defineMessages({
skinSelectorTitle: {
id: 'app.skins.title',
defaultMessage: 'Skin selector',
},
modrinthPrideSection: { modrinthPrideSection: {
id: 'app.skins.section.modrinth-pride', id: 'app.skins.section.modrinth-pride',
defaultMessage: 'Modrinth Pride', defaultMessage: 'Modrinth Pride',
@@ -1071,7 +1067,7 @@ await loadSkins()
<div v-if="currentUser" class="skin-layout box-border min-h-full p-4"> <div v-if="currentUser" class="skin-layout box-border min-h-full p-4">
<div class="sticky top-6 self-start p-2 pt-0"> <div class="sticky top-6 self-start p-2 pt-0">
<h1 class="m-0 text-2xl font-bold flex items-center gap-2"> <h1 class="m-0 text-2xl font-bold flex items-center gap-2">
{{ formatMessage(messages.skinSelectorTitle) }} {{ formatMessage(commonMessages.skinSelectorLabel) }}
</h1> </h1>
<div <div
class="ml-5 mt-4 flex h-[calc(80vh-1rem)] items-center justify-center max-[700px]:h-[calc(50vh-1rem)]" class="ml-5 mt-4 flex h-[calc(80vh-1rem)] items-center justify-center max-[700px]:h-[calc(50vh-1rem)]"
-4
View File
@@ -1,4 +0,0 @@
<script setup lang="ts"></script>
<template>
<div class="p-6 flex flex-col gap-2">Worlds</div>
</template>
+1 -2
View File
@@ -3,6 +3,5 @@ import Index from './Index.vue'
import Servers from './Servers.vue' import Servers from './Servers.vue'
import Skins from './Skins.vue' import Skins from './Skins.vue'
import User from './User.vue' import User from './User.vue'
import Worlds from './Worlds.vue'
export { Browse, Index, Servers, Skins, User, Worlds } export { Browse, Index, Servers, Skins, User }
-8
View File
@@ -20,14 +20,6 @@ export default new createRouter({
breadcrumb: [{ name: 'Home' }], breadcrumb: [{ name: 'Home' }],
}, },
}, },
{
path: '/worlds',
name: 'Worlds',
component: Pages.Worlds,
meta: {
breadcrumb: [{ name: 'Worlds' }],
},
},
{ {
path: '/hosting/manage/', path: '/hosting/manage/',
name: 'Servers', name: 'Servers',
-1
View File
@@ -5,7 +5,6 @@ let systemThemeMq: MediaQueryList | null = null
export const DEFAULT_FEATURE_FLAGS = { export const DEFAULT_FEATURE_FLAGS = {
project_background: false, project_background: false,
page_path: false, page_path: false,
worlds_tab: false,
worlds_in_home: true, worlds_in_home: true,
server_project_qa: false, server_project_qa: false,
show_version_environment_column: false, show_version_environment_column: false,
+1 -5
View File
@@ -253,7 +253,7 @@
/> />
<CompassIcon v-else aria-hidden="true" /> <CompassIcon v-else aria-hidden="true" />
<span class="hidden md:contents">{{ <span class="hidden md:contents">{{
formatMessage(navMenuMessages.discoverContent) formatMessage(commonMessages.discoverContentLabel)
}}</span> }}</span>
<span class="contents md:hidden">{{ formatMessage(navMenuMessages.discover) }}</span> <span class="contents md:hidden">{{ formatMessage(navMenuMessages.discover) }}</span>
<DropdownIcon aria-hidden="true" class="h-5 w-5" /> <DropdownIcon aria-hidden="true" class="h-5 w-5" />
@@ -933,10 +933,6 @@ const navMenuMessages = defineMessages({
id: 'layout.nav.search', id: 'layout.nav.search',
defaultMessage: 'Search', defaultMessage: 'Search',
}, },
discoverContent: {
id: 'layout.nav.discover-content',
defaultMessage: 'Discover content',
},
discover: { discover: {
id: 'layout.nav.discover', id: 'layout.nav.discover',
defaultMessage: 'Discover', defaultMessage: 'Discover',
@@ -1949,9 +1949,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Objevit" "message": "Objevit"
}, },
"layout.nav.discover-content": {
"message": "Objevit obsah"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Získat Modrinth App" "message": "Získat Modrinth App"
}, },
@@ -1985,9 +1985,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Opdag" "message": "Opdag"
}, },
"layout.nav.discover-content": {
"message": "Opdag indhold"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Hent Modrinth-app" "message": "Hent Modrinth-app"
}, },
@@ -2879,9 +2879,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Entdecken" "message": "Entdecken"
}, },
"layout.nav.discover-content": {
"message": "Inhalte entdecken"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Modrinth App herunterladen" "message": "Modrinth App herunterladen"
}, },
@@ -2879,9 +2879,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Entdecken" "message": "Entdecken"
}, },
"layout.nav.discover-content": {
"message": "Inhalte entdecken"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Modrinth App herunterladen" "message": "Modrinth App herunterladen"
}, },
@@ -2879,9 +2879,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Discover" "message": "Discover"
}, },
"layout.nav.discover-content": {
"message": "Discover content"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Get Modrinth App" "message": "Get Modrinth App"
}, },
@@ -2630,9 +2630,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Descubre" "message": "Descubre"
}, },
"layout.nav.discover-content": {
"message": "Descubrir contenido"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Obtener la Modrinth App" "message": "Obtener la Modrinth App"
}, },
@@ -2498,9 +2498,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Descubre" "message": "Descubre"
}, },
"layout.nav.discover-content": {
"message": "Descubra el contenido"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Descargar la aplicación Modrinth" "message": "Descargar la aplicación Modrinth"
}, },
@@ -1829,9 +1829,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Tumuklas" "message": "Tumuklas"
}, },
"layout.nav.discover-content": {
"message": "Tumuklas ng kontento"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Kunin ang Modrinth App" "message": "Kunin ang Modrinth App"
}, },
@@ -2873,9 +2873,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Découvrir" "message": "Découvrir"
}, },
"layout.nav.discover-content": {
"message": "Découvrir du contenu"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Obtenir Modrinth App" "message": "Obtenir Modrinth App"
}, },
@@ -1580,9 +1580,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "גלה" "message": "גלה"
}, },
"layout.nav.discover-content": {
"message": "גלה תוכן"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "להוריד אפליקציאת Modrinth" "message": "להוריד אפליקציאת Modrinth"
}, },
@@ -2699,9 +2699,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Felfedezés" "message": "Felfedezés"
}, },
"layout.nav.discover-content": {
"message": "Tartalom felfedezése"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Szerezd meg a Modrinth Appot" "message": "Szerezd meg a Modrinth Appot"
}, },
@@ -1841,9 +1841,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Temukan" "message": "Temukan"
}, },
"layout.nav.discover-content": {
"message": "Temukan konten"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Dapatkan Modrinth App" "message": "Dapatkan Modrinth App"
}, },
@@ -2870,9 +2870,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Esplora" "message": "Esplora"
}, },
"layout.nav.discover-content": {
"message": "Sfoglia i contenuti"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Scarica Modrinth App" "message": "Scarica Modrinth App"
}, },
@@ -2369,9 +2369,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "探索" "message": "探索"
}, },
"layout.nav.discover-content": {
"message": "コンテンツを探索"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Modrinth Appを入手" "message": "Modrinth Appを入手"
}, },
@@ -2873,9 +2873,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "탐색" "message": "탐색"
}, },
"layout.nav.discover-content": {
"message": "콘텐츠 탐색하기"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Modrinth App 받기" "message": "Modrinth App 받기"
}, },
@@ -2354,9 +2354,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Temui" "message": "Temui"
}, },
"layout.nav.discover-content": {
"message": "Temui kandungan"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Dapatkan Modrinth App" "message": "Dapatkan Modrinth App"
}, },
@@ -2876,9 +2876,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Ontdek" "message": "Ontdek"
}, },
"layout.nav.discover-content": {
"message": "Ontdek inhoud"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Modrinth-app downloaden" "message": "Modrinth-app downloaden"
}, },
@@ -2285,9 +2285,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Utforsk" "message": "Utforsk"
}, },
"layout.nav.discover-content": {
"message": "Utforsk innhold"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Skaff deg Modrinth App-en" "message": "Skaff deg Modrinth App-en"
}, },
@@ -2870,9 +2870,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Odkrywaj" "message": "Odkrywaj"
}, },
"layout.nav.discover-content": {
"message": "Odkrywaj zawartość"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Pobierz Modrinth App" "message": "Pobierz Modrinth App"
}, },
@@ -2879,9 +2879,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Descubra" "message": "Descubra"
}, },
"layout.nav.discover-content": {
"message": "Descubra conteúdo"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Baixe o Modrinth App" "message": "Baixe o Modrinth App"
}, },
@@ -2183,9 +2183,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Descobrir" "message": "Descobrir"
}, },
"layout.nav.discover-content": {
"message": "Descobrir conteúdo"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Obter a Modrinth App" "message": "Obter a Modrinth App"
}, },
@@ -1106,9 +1106,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Descoperă" "message": "Descoperă"
}, },
"layout.nav.discover-content": {
"message": "Descoperă conținut"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Ia-ți Modrinth App" "message": "Ia-ți Modrinth App"
}, },
@@ -2873,9 +2873,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Найти" "message": "Найти"
}, },
"layout.nav.discover-content": {
"message": "Найти проекты"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Скачать Modrinth App" "message": "Скачать Modrinth App"
}, },
@@ -2552,9 +2552,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Utforska" "message": "Utforska"
}, },
"layout.nav.discover-content": {
"message": "Utforska innehåll"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Installera Modrinth App" "message": "Installera Modrinth App"
}, },
@@ -2630,9 +2630,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Keşfet" "message": "Keşfet"
}, },
"layout.nav.discover-content": {
"message": "İçerik keşfet"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Modrinth App yükle" "message": "Modrinth App yükle"
}, },
@@ -2870,9 +2870,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Дослідити" "message": "Дослідити"
}, },
"layout.nav.discover-content": {
"message": "Дослідити вміст"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Установити Modrinth App" "message": "Установити Modrinth App"
}, },
@@ -2519,9 +2519,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "Khám phá" "message": "Khám phá"
}, },
"layout.nav.discover-content": {
"message": "Khám phá nội dung"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "Tải ứng dụng Modrinth" "message": "Tải ứng dụng Modrinth"
}, },
@@ -2879,9 +2879,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "发现" "message": "发现"
}, },
"layout.nav.discover-content": {
"message": "发现内容"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "获取 Modrinth App" "message": "获取 Modrinth App"
}, },
@@ -2879,9 +2879,6 @@
"layout.nav.discover": { "layout.nav.discover": {
"message": "探索" "message": "探索"
}, },
"layout.nav.discover-content": {
"message": "探索內容"
},
"layout.nav.get-modrinth-app": { "layout.nav.get-modrinth-app": {
"message": "取得 Modrinth App" "message": "取得 Modrinth App"
}, },
+6
View File
@@ -2240,6 +2240,9 @@
"label.details": { "label.details": {
"defaultMessage": "Details" "defaultMessage": "Details"
}, },
"label.discover-content": {
"defaultMessage": "Discover content"
},
"label.done": { "label.done": {
"defaultMessage": "Done" "defaultMessage": "Done"
}, },
@@ -2387,6 +2390,9 @@
"label.singleplayer": { "label.singleplayer": {
"defaultMessage": "Singleplayer" "defaultMessage": "Singleplayer"
}, },
"label.skin-selector": {
"defaultMessage": "Skin selector"
},
"label.sort-by": { "label.sort-by": {
"defaultMessage": "Sort by: " "defaultMessage": "Sort by: "
}, },
+8
View File
@@ -111,6 +111,10 @@ export const commonMessages = defineMessages({
id: 'label.details', id: 'label.details',
defaultMessage: 'Details', defaultMessage: 'Details',
}, },
discoverContentLabel: {
id: 'label.discover-content',
defaultMessage: 'Discover content',
},
downloadButton: { downloadButton: {
id: 'button.download', id: 'button.download',
defaultMessage: 'Download', defaultMessage: 'Download',
@@ -323,6 +327,10 @@ export const commonMessages = defineMessages({
id: 'label.singleplayer', id: 'label.singleplayer',
defaultMessage: 'Singleplayer', defaultMessage: 'Singleplayer',
}, },
skinSelectorLabel: {
id: 'label.skin-selector',
defaultMessage: 'Skin selector',
},
sortByLabel: { sortByLabel: {
id: 'label.sort-by', id: 'label.sort-by',
defaultMessage: 'Sort by: ', defaultMessage: 'Sort by: ',