custom fonts

This commit is contained in:
pa
2026-01-17 19:42:55 +09:00
committed by Natsumi
parent f7a214951d
commit 5e5abc1141
29 changed files with 251 additions and 153 deletions

View File

@@ -1,17 +1,16 @@
<template>
<div @click="confirm" class="cursor-pointer w-fit align-top flex items-center">
<span v-if="avatarType" :class="color" class="mr-1.5">
<Lock v-if="avatarType === '(own)'" class="h-4 w-4" />
<Unlock v-else-if="avatarType === '(public)'" class="h-4 w-4" />
<span>{{ avatarName }}</span>
<span v-if="avatarType === '(own)'" :class="color" class="mx-1">
<Lock v-if="avatarType" class="h-4 w-4" />
</span>
<span class="mr-2">{{ avatarName }}</span>
<span v-if="avatarTags" style="font-size: 12px">{{ avatarTags }}</span>
</div>
</template>
<script setup>
import { Lock, Unlock } from 'lucide-vue-next';
import { ref, watch } from 'vue';
import { Lock } from 'lucide-vue-next';
import { useAvatarStore } from '../stores';

View File

@@ -132,9 +132,10 @@
<div class="flex min-w-0 flex-col">
<button
type="button"
class="text-left text-sm font-medium truncate"
class="text-left text-sm font-medium truncate flex items-center gap-1"
@click="openGithub">
VRCX
<Heart class="text-primary fill-current stroke-none" />
</button>
<span class="text-xs text-muted-foreground">{{ version }}</span>
</div>
@@ -288,7 +289,7 @@
} from '@/components/ui/dropdown-menu';
import { computed, defineAsyncComponent, onMounted, ref, watch } from 'vue';
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';
import { ChevronRight } from 'lucide-vue-next';
import { ChevronRight, Heart } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { useI18n } from 'vue-i18n';
import { useRouter } from 'vue-router';

View File

@@ -82,12 +82,22 @@
><Apple class="h-4 w-4 text-[#8e8e93]" />
<span
v-if="avatarDialog.platformInfo.ios"
:class="['x-grey', 'x-tag-border-left', 'text-[#8e8e93]', 'border-[#8e8e93]']"
:class="[
'x-grey',
'x-tag-border-left',
'text-[#8e8e93]',
'border-[#8e8e93]'
]"
>{{ avatarDialog.platformInfo.ios.performanceRating }}</span
>
<span
v-if="avatarDialog.bundleSizes['ios']"
:class="['x-grey', 'x-tag-border-left', 'text-[#8e8e93]', 'border-[#8e8e93]']"
:class="[
'x-grey',
'x-tag-border-left',
'text-[#8e8e93]',
'border-[#8e8e93]'
]"
>{{ avatarDialog.bundleSizes['ios'].fileSize }}</span
>
</Badge>
@@ -491,14 +501,14 @@
</template>
<template #JSON>
<Button
class="rounded-full h-6 w-6 mr-2"
class="rounded-full mr-2"
size="icon-sm"
variant="outline"
@click="refreshAvatarDialogTreeData()">
<RefreshCw />
</Button>
<Button
class="rounded-full h-6 w-6"
class="rounded-full"
size="icon-sm"
variant="outline"
@click="downloadAndSaveJson(avatarDialog.id, avatarDialog.ref)">

View File

@@ -1139,14 +1139,14 @@
</template>
<template #JSON>
<Button
class="rounded-full h-6 w-6 mr-2"
class="rounded-full mr-2"
size="icon-sm"
variant="outline"
@click="refreshGroupDialogTreeData()">
<RefreshCw />
</Button>
<Button
class="rounded-full h-6 w-6"
class="rounded-full"
size="icon-sm"
variant="outline"
@click="downloadAndSaveJson(groupDialog.id, groupDialog.ref)">

View File

@@ -1,17 +1,13 @@
<template>
<Dialog v-model:open="groupMemberModeration.visible">
<DialogContent class="x-dialog max-w-none w-[90vw]">
<DialogContent class="x-dialog max-w-none sm:min-w-[90vw] sm:max-w-[90vw] sm:min-h-[90vh] sm:max-h-[90vh]">
<DialogHeader>
<DialogTitle>{{ t('dialog.group_member_moderation.header') }}</DialogTitle>
</DialogHeader>
<div>
<h3>{{ groupMemberModeration.groupRef.name }}</h3>
<TabsUnderline
default-value="members"
:items="groupModerationTabs"
:unmount-on-hide="false"
style="height: 100%">
<TabsUnderline default-value="members" :items="groupModerationTabs" :unmount-on-hide="false">
<template #members>
<div style="margin-top: 10px">
<Button
@@ -54,10 +50,8 @@
)
"
@click.stop>
<span>
{{ t(memberSortOrder.name) }}
<ArrowDown style="margin-left: 5px" />
</span>
{{ t(memberSortOrder.name) }}
<ArrowDown style="margin-left: 5px" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
@@ -96,10 +90,8 @@
)
"
@click.stop>
<span>
{{ t(memberFilter.name) }}
<ArrowDown style="margin-left: 5px" />
</span>
{{ t(memberFilter.name) }}
<ArrowDown style="margin-left: 5px" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>

View File

@@ -193,9 +193,7 @@
(userDialog.representedGroup && userDialog.representedGroup.isRepresenting)
"
class="extra">
<div
style="display: inline-block; flex: none; margin-right: 5px">
<div style="display: inline-block; flex: none; margin-right: 5px">
<Avatar
class="x-link size-15! rounded-lg!"
:style="{
@@ -1055,10 +1053,7 @@
</Select>
</div>
</div>
<div
class="x-friend-list"
style="margin-top: 10px; min-height: 60px">
<div class="x-friend-list" style="margin-top: 10px; min-height: 60px">
<div
v-for="world in userDialog.worlds"
:key="world.id"
@@ -1092,7 +1087,6 @@
v-model="favoriteWorldsTab"
:items="favoriteWorldTabs"
:unmount-on-hide="false"
class="zero-margin-tabs"
style="margin-top: 10px; height: 50vh">
<template
@@ -1257,14 +1251,14 @@
<template #JSON>
<Button
class="rounded-full h-6 w-6 mr-2"
class="rounded-full mr-2"
size="icon-sm"
variant="outline"
@click="refreshUserDialogTreeData()">
<RefreshCw />
</Button>
<Button
class="rounded-full h-6 w-6"
class="rounded-full"
size="icon-sm"
variant="outline"
@click="downloadAndSaveJson(userDialog.id, userDialog.ref)">

View File

@@ -93,7 +93,12 @@
<Apple class="h-4 w-4 text-[#8e8e93]" />
><span
v-if="worldDialog.bundleSizes['ios']"
:class="['x-grey', 'x-tag-border-left', 'text-[#8e8e93]', 'border-[#8e8e93]']">
:class="[
'x-grey',
'x-tag-border-left',
'text-[#8e8e93]',
'border-[#8e8e93]'
]">
{{ worldDialog.bundleSizes['ios'].fileSize }}
</span>
</Badge>
@@ -680,14 +685,14 @@
</template>
<template #JSON>
<Button
class="rounded-full h-6 w-6 mr-2"
class="rounded-full mr-2"
size="icon-sm"
variant="outline"
@click="refreshWorldDialogTreeData()">
<RefreshCw />
</Button>
<Button
class="rounded-full h-6 w-6"
class="rounded-full"
size="icon-sm"
variant="outline"
@click="downloadAndSaveJson(worldDialog.id, worldDialog.ref)">

View File

@@ -65,7 +65,8 @@
:class="
cn(
'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',
props.class
props.class,
'max-h-[85vh] overflow-y-auto scrollbar-hidden'
)
">
<slot />