del:移除了项目与社区以及开发者卡片

This commit is contained in:
2026-09-13 06:28:31 +08:00
parent ea80a98143
commit cf71e6c6b0
14 changed files with 52 additions and 263 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

View File

@ -1,4 +1,5 @@
<script setup lang="ts">
import { Avatar, defineMessages, NewModal, useVIntl } from '@modrinth/ui' import { Avatar, defineMessages, NewModal, useVIntl } from '@modrinth/ui'
import { ref } from 'vue' import { ref } from 'vue'
@ -15,18 +16,15 @@ const messages = defineMessages({
}, },
clickHint: { clickHint: {
id: 'app.settings.about.easteregg.click-hint', id: 'app.settings.about.easteregg.click-hint',
defaultMessage: 'Click to open a hidden Mini Game', defaultMessage: 'Click to open a hidden Easter egg',
}, },
}) })
const modal = ref<InstanceType<typeof NewModal> | null>(null) const modal = ref<InstanceType<typeof NewModal> | null>(null)
const contributors = [ // 贡献者列表占位。原彩蛋的硬编码项已移除,若要恢复,按下面结构补充即可:
{ // { name: '某某', avatarUrl: 'https://...' }
name: 'cyf112233', const contributors: { name: string; avatarUrl: string }[] = []
avatarUrl: `${window.location.origin}/easteregg/avatars/cyf112233.jpg`,
},
]
function show() { function show() {
modal.value?.show() modal.value?.show()
@ -47,22 +45,16 @@ defineExpose({ show })
width="min(480px, calc(100vw - 2rem))" width="min(480px, calc(100vw - 2rem))"
max-width="480px" max-width="480px"
> >
<ul class="m-0 list-none p-0"> <ul v-if="contributors.length" class="m-0 list-none p-0">
<li> <li v-for="contributor in contributors" :key="contributor.name">
<button <button
type="button" type="button"
class="flex w-full items-center gap-3 rounded-xl bg-surface-4 p-4 text-left transition-colors hover:bg-surface-5" class="flex w-full items-center gap-3 rounded-xl bg-surface-4 p-4 text-left transition-colors hover:bg-surface-5"
@click="selectContributor" @click="selectContributor"
> >
<Avatar <Avatar :src="contributor.avatarUrl" :alt="contributor.name" size="4rem" circle no-shadow />
:src="contributors[0].avatarUrl"
:alt="contributors[0].name"
size="4rem"
circle
no-shadow
/>
<span class="min-w-0"> <span class="min-w-0">
<span class="block font-semibold text-contrast">{{ contributors[0].name }}</span> <span class="block font-semibold text-contrast">{{ contributor.name }}</span>
<span class="block text-sm text-secondary"> <span class="block text-sm text-secondary">
{{ formatMessage(messages.clickHint) }} {{ formatMessage(messages.clickHint) }}
</span> </span>

View File

@ -1,35 +1,25 @@
<script setup lang="ts"> <script setup lang="ts">
import { import {
CheckIcon,
ChevronDownIcon, ChevronDownIcon,
CopyIcon,
EditIcon,
ExternalIcon, ExternalIcon,
GithubIcon,
GlobeIcon,
HeartHandshakeIcon,
IssuesIcon,
ScaleIcon, ScaleIcon,
UsersIcon, UsersIcon,
} from '@modrinth/assets' } from '@modrinth/assets'
import { Avatar, defineMessages, NewButton as Button, useVIntl } from '@modrinth/ui' import { Avatar, defineMessages, NewButton as Button, useVIntl } from '@modrinth/ui'
import { getVersion } from '@tauri-apps/api/app' import { getVersion } from '@tauri-apps/api/app'
import { inject, nextTick, onScopeDispose, ref, shallowRef } from 'vue' import { inject, nextTick, onScopeDispose, ref, shallowRef } from 'vue'
import AfdianIcon from '@/assets/external/afdian.png'
import QqIcon from '@/assets/external/qq.svg?component'
import EasterEggContributorsModal from '@/components/ui/easteregg/EasterEggContributorsModal.vue' import EasterEggContributorsModal from '@/components/ui/easteregg/EasterEggContributorsModal.vue'
import EasterEggGameModal from '@/components/ui/easteregg/EasterEggGameModal.vue' import EasterEggGameModal from '@/components/ui/easteregg/EasterEggGameModal.vue'
import { AxolotlBrandConfig } from '@/config' import { AxolotlBrandConfig } from '@/config'
import { contributors, type TeamMember } from '@/data/about'
import { contributors, teamMembers, type TeamMember } from '@/data/about'
import AboutScene from '../AboutScene.vue' import AboutScene from '../AboutScene.vue'
import { type AboutMemberExperience, getAboutMemberExperience } from './about-member-experiences' import { type AboutMemberExperience, getAboutMemberExperience } from './about-member-experiences'
import QqChannelIcon from './QqChannelIcon.vue'
const { formatMessage } = useVIntl() const { formatMessage } = useVIntl()
const version = await getVersion() const version = await getVersion()
const copied = ref(false)
const experienceHost = ref<HTMLElement>() const experienceHost = ref<HTMLElement>()
const activeMemberExperience = shallowRef<AboutMemberExperience>() const activeMemberExperience = shallowRef<AboutMemberExperience>()
const pressingMemberName = ref<string>() const pressingMemberName = ref<string>()
@ -41,14 +31,6 @@ const replayOnboarding = inject<(mode: 'main' | 'instance') => Promise<void>>('r
const licenseUrl = `${AxolotlBrandConfig.repositoryUrl}/blob/main/LICENSE` const licenseUrl = `${AxolotlBrandConfig.repositoryUrl}/blob/main/LICENSE`
const thirdPartyLicensesUrl = `${AxolotlBrandConfig.repositoryUrl}/tree/main/third-party/licenses` const thirdPartyLicensesUrl = `${AxolotlBrandConfig.repositoryUrl}/tree/main/third-party/licenses`
async function copyQqGroupNumber() {
await navigator.clipboard.writeText(AxolotlBrandConfig.qqGroupNumber)
copied.value = true
setTimeout(() => {
copied.value = false
}, 3000)
}
function cancelMemberLongPress() { function cancelMemberLongPress() {
if (longPressTimer) window.clearTimeout(longPressTimer) if (longPressTimer) window.clearTimeout(longPressTimer)
longPressTimer = undefined longPressTimer = undefined
@ -171,54 +153,6 @@ const messages = defineMessages({
id: 'app.settings.about.development-team', id: 'app.settings.about.development-team',
defaultMessage: 'Development team', defaultMessage: 'Development team',
}, },
communitySupport: {
id: 'app.settings.about.community-support',
defaultMessage: 'Project & community',
},
projectWebsite: {
id: 'app.settings.about.project-website',
defaultMessage: 'Project website',
},
repository: {
id: 'app.settings.about.repository',
defaultMessage: 'Source code',
},
reportIssue: {
id: 'app.settings.about.report-issue',
defaultMessage: 'Issues & feedback',
},
qqGroup: {
id: 'app.settings.about.qq-group',
defaultMessage: 'Player QQ group',
},
qqChannel: {
id: 'app.settings.about.qq-channel',
defaultMessage: 'QQ channel',
},
copyQqGroup: {
id: 'app.settings.about.copy-qq-group',
defaultMessage: 'Copy group number',
},
copiedQqGroup: {
id: 'app.settings.about.copied-qq-group',
defaultMessage: 'Group number copied',
},
afdian: {
id: 'app.settings.about.afdian',
defaultMessage: 'Support on Afdian',
},
afdianDescription: {
id: 'app.settings.about.afdian-description',
defaultMessage: 'Help support continued development',
},
survey: {
id: 'app.settings.about.survey',
defaultMessage: 'Community survey',
},
surveyDescription: {
id: 'app.settings.about.survey-description',
defaultMessage: 'Help us improve Starlight Launcher',
},
licenseAttribution: { licenseAttribution: {
id: 'app.settings.about.license-attribution', id: 'app.settings.about.license-attribution',
defaultMessage: 'License & attribution', defaultMessage: 'License & attribution',
@ -254,28 +188,6 @@ const messages = defineMessages({
}, },
}) })
const projectLinks = [
{
href: AxolotlBrandConfig.website,
label: messages.projectWebsite,
icon: GlobeIcon,
},
{
href: AxolotlBrandConfig.repositoryUrl,
label: messages.repository,
icon: GithubIcon,
},
{
href: AxolotlBrandConfig.supportUrl,
label: messages.reportIssue,
icon: IssuesIcon,
},
{
href: AxolotlBrandConfig.qqChannelUrl,
label: messages.qqChannel,
icon: QqChannelIcon,
},
]
</script> </script>
<template> <template>
@ -318,107 +230,6 @@ const projectLinks = [
</p> </p>
</section> </section>
<section>
<h3 class="m-0 mb-3 flex items-center gap-2 text-base font-semibold text-contrast">
<HeartHandshakeIcon class="size-5 text-secondary" />
{{ formatMessage(messages.communitySupport) }}
</h3>
<div class="grid gap-3 sm:grid-cols-2">
<a
v-for="link in projectLinks"
:key="link.label"
:href="link.href"
target="_blank"
rel="noopener noreferrer"
class="flex min-w-0 items-center gap-3 rounded-xl bg-surface-4 p-4 transition-colors hover:bg-surface-5"
>
<span
class="flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-2 text-contrast"
>
<component :is="link.icon" class="size-6" />
</span>
<span class="min-w-0 flex-1 font-semibold text-contrast">
{{ formatMessage(link.label) }}
</span>
<ExternalIcon class="size-5 shrink-0 text-secondary" />
</a>
<button
type="button"
:disabled="copied"
:aria-label="
copied ? formatMessage(messages.copiedQqGroup) : formatMessage(messages.copyQqGroup)
"
class="flex min-w-0 items-center gap-3 rounded-xl bg-surface-4 p-4 text-left transition-colors hover:bg-surface-5 disabled:cursor-default"
@click="copyQqGroupNumber"
>
<span
class="flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-2 text-contrast"
>
<QqIcon class="size-6" />
</span>
<span class="min-w-0 flex-1">
<span class="block font-semibold text-contrast">
{{ formatMessage(messages.qqGroup) }}
</span>
<span class="block text-sm text-secondary">
{{ AxolotlBrandConfig.qqGroupNumber }}
</span>
</span>
<span class="shrink-0" aria-live="polite">
<CheckIcon v-if="copied" class="size-5 text-green" />
<CopyIcon v-else class="size-5 text-secondary" />
<span class="sr-only">
{{
copied ? formatMessage(messages.copiedQqGroup) : formatMessage(messages.copyQqGroup)
}}
</span>
</span>
</button>
<a
:href="AxolotlBrandConfig.sponsorUrl"
target="_blank"
rel="noopener noreferrer"
class="flex min-w-0 items-center gap-3 rounded-xl bg-surface-4 p-4 transition-colors hover:bg-surface-5"
>
<span class="flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-2">
<img :src="AfdianIcon" alt="" class="size-7 object-contain" />
</span>
<span class="min-w-0 flex-1">
<span class="block font-semibold text-contrast">
{{ formatMessage(messages.afdian) }}
</span>
<span class="block text-sm text-secondary">
{{ formatMessage(messages.afdianDescription) }}
</span>
</span>
<ExternalIcon class="size-5 shrink-0 text-secondary" />
</a>
<a
:href="AxolotlBrandConfig.surveyUrl"
target="_blank"
rel="noopener noreferrer"
class="flex min-w-0 items-center gap-3 rounded-xl bg-surface-4 p-4 transition-colors hover:bg-surface-5 sm:col-span-2"
>
<span
class="flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-2 text-contrast"
>
<EditIcon class="size-6" />
</span>
<span class="min-w-0 flex-1">
<span class="block font-semibold text-contrast">
{{ formatMessage(messages.survey) }}
</span>
<span class="block text-sm text-secondary">
{{ formatMessage(messages.surveyDescription) }}
</span>
</span>
<ExternalIcon class="size-5 shrink-0 text-secondary" />
</a>
</div>
</section>
<section> <section>
<h3 class="m-0 mb-3 flex items-center gap-2 text-base font-semibold text-contrast"> <h3 class="m-0 mb-3 flex items-center gap-2 text-base font-semibold text-contrast">
@ -464,6 +275,41 @@ const projectLinks = [
</div> </div>
</section> </section>
<section>
<h3 class="m-0 mb-3 flex items-center gap-2 text-base font-semibold text-contrast">
<UsersIcon class="size-5 text-secondary" />
{{ formatMessage(messages.developmentTeam) }}
</h3>
<div class="grid gap-3 sm:grid-cols-2">
<a
v-for="member in teamMembers"
:key="member.name"
:href="member.url ?? undefined"
target="_blank"
rel="noopener noreferrer"
class="flex min-w-0 items-center gap-3 rounded-xl bg-surface-4 p-3 transition-colors hover:bg-surface-5"
@pointerdown="startMemberLongPress(member, $event)"
@pointermove="moveMemberLongPress"
@pointerup="cancelMemberLongPress"
@pointerleave="cancelMemberLongPress"
@click="handleMemberClick"
@contextmenu="handleMemberContextMenu(member, $event)"
>
<Avatar
:src="member.avatarUrl"
:alt="member.name"
size="2.5rem"
circle
no-shadow
loading="lazy"
/>
<span class="min-w-0 flex-1 truncate font-semibold text-contrast">
{{ member.name }}
</span>
<ExternalIcon v-if="member.url" class="size-4 shrink-0 text-secondary" />
</a>
</div>
</section>
<details class="group pt-4 about-settings-details"> <details class="group pt-4 about-settings-details">
<summary <summary
class="flex cursor-pointer list-none items-center gap-2 text-base font-semibold text-contrast [&::-webkit-details-marker]:hidden" class="flex cursor-pointer list-none items-center gap-2 text-base font-semibold text-contrast [&::-webkit-details-marker]:hidden"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -1,63 +1,14 @@
[
{
"name": "Mystic Stars",
"avatar": "mystic-stars.png",
"url": "https://github.com/Mystic-Stars",
"experience": "easter-egg" [
},
{
"name": "ItzJerry",
"avatar": "itzjerry.png",
"url": "https://github.com/ItzJerry317"
},
{
"name": "MagicCube",
"avatar": "magiccube.jpg"
},
{
"name": "HECODE",
"avatar": "hecode.png",
"url": "https://codezhangborui.com"
},
{
"name": "Lintern",
"avatar": "lintern.png",
"url": "https://github.com/Lintern"
},
{
"name": "KaKa",
"avatar": "kaka.png",
"url": "https://github.com/kakala666"
},
{
"name": "addre",
"avatar": "addre.png",
"url": "https://b23.tv/LvJbUGt"
},
{
"name": "bcmray",
"avatar": "bcmray.png",
"url": "http://www.bcmray.fun"
},
{
"name": "Fgaoxing",
"avatar": "fgaoxing.png",
"url": "https://github.com/fgaoxing"
},
{
"name": "zzhzhouzhou",
"avatar": "zzhzhouzhou.png",
"url": "https://github.com/zzhzhouzhou"
},
{ {
"name": "Ax_Tps", "name": "Ax_Tps",
"avatar": "ax-tps.png", "avatar": "ax-tps.png",
"url": "https://github.com/Ax_Tps" "url": "https://github.com/ApTx2012",
"experience": "easter-egg"
}, },
{ {
"name": "Disy920", "name": "Disy920",
"avatar": "Disy920.png", "avatar": "Disy920.png",
"url": "https://github.com/Disy920" "url": "https://space.bilibili.com/231241189?spm_id_from=333.337.0.0"
} }
] ]