replace remixicon

This commit is contained in:
pa
2026-01-15 10:43:56 +09:00
committed by Natsumi
parent 889302104a
commit 87dc871578
37 changed files with 370 additions and 296 deletions
+3 -3
View File
@@ -5,7 +5,7 @@
<Select :model-value="sortFavorites" @update:modelValue="handleSortFavoritesChange">
<SelectTrigger size="sm" class="favorites-toolbar__select">
<span class="flex items-center gap-2">
<i class="ri-sort-asc"></i>
<ArrowUpDown class="h-4 w-4" />
<SelectValue
:placeholder="t('view.settings.appearance.appearance.sort_favorite_by_name')" />
</span>
@@ -166,7 +166,7 @@
<span
v-if="group.visibility === visibility"
class="group-visibility-menu__check">
<i class="ri-check-line"></i>
<Check class="h-3 w-3" />
</span>
</button>
</div>
@@ -526,7 +526,7 @@
<script setup>
import { computed, markRaw, nextTick, onBeforeMount, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue';
import { Ellipsis, Loader, MoreHorizontal, Plus, RefreshCcw, RefreshCw } from 'lucide-vue-next';
import { ArrowUpDown, Check, Ellipsis, Loader, MoreHorizontal, Plus, RefreshCcw, RefreshCw } from 'lucide-vue-next';
import { InputGroupField, InputGroupSearch } from '@/components/ui/input-group';
import { Button } from '@/components/ui/button';
import { ElMessageBox } from 'element-plus';
+14 -6
View File
@@ -5,7 +5,7 @@
<Select :model-value="sortFavorites" @update:modelValue="handleSortFavoritesChange">
<SelectTrigger size="sm" class="favorites-toolbar__select">
<span class="flex items-center gap-2">
<i class="ri-sort-asc"></i>
<ArrowUpDown class="h-4 w-4" />
<SelectValue
:placeholder="t('view.settings.appearance.appearance.sort_favorite_by_name')" />
</span>
@@ -106,7 +106,10 @@
<div
v-for="group in favoriteFriendGroups"
:key="group.key"
:class="[ 'group-item', { 'is-active': !hasSearchInput && isGroupActive('remote', group.key) } ]"
:class="[
'group-item',
{ 'is-active': !hasSearchInput && isGroupActive('remote', group.key) }
]"
@click="handleGroupClick('remote', group.key)">
<div class="group-item__top">
<span class="group-item__name">{{ group.displayName }}</span>
@@ -149,7 +152,13 @@
v-for="visibility in friendGroupVisibilityOptions"
:key="visibility"
type="button"
:class="[ 'group-visibility-menu__item', { 'is-active': group.visibility === visibility } ]"
:class="[
'group-visibility-menu__item',
{
'is-active':
group.visibility === visibility
}
]"
@click="
handleVisibilitySelection(group, visibility)
">
@@ -157,7 +166,7 @@
<span
v-if="group.visibility === visibility"
class="group-visibility-menu__check">
<i class="ri-check-line"></i>
<Check class="h-3 w-3" />
</span>
</button>
</div>
@@ -301,10 +310,9 @@
<script setup>
import { computed, nextTick, onBeforeMount, onMounted, onUnmounted, ref, watch } from 'vue';
import { MoreHorizontal, RefreshCw } from 'lucide-vue-next';
import { ArrowUpDown, Check, Ellipsis, MoreHorizontal, RefreshCw } from 'lucide-vue-next';
import { Button } from '@/components/ui/button';
import { ElMessageBox } from 'element-plus';
import { Ellipsis } from 'lucide-vue-next';
import { InputGroupSearch } from '@/components/ui/input-group';
import { Spinner } from '@/components/ui/spinner';
import { storeToRefs } from 'pinia';
+2 -2
View File
@@ -5,7 +5,7 @@
<Select :model-value="sortFavorites" @update:modelValue="handleSortFavoritesChange">
<SelectTrigger size="sm" class="favorites-toolbar__select">
<span class="flex items-center gap-2">
<i class="ri-sort-asc"></i>
<ArrowUpDown class="h-4 w-4" />
<SelectValue
:placeholder="t('view.settings.appearance.appearance.sort_favorite_by_name')" />
</span>
@@ -437,7 +437,7 @@
<script setup>
import { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, watch } from 'vue';
import { Ellipsis, MoreHorizontal, Plus, RefreshCcw, RefreshCw } from 'lucide-vue-next';
import { ArrowUpDown, Ellipsis, MoreHorizontal, Plus, RefreshCcw, RefreshCw } from 'lucide-vue-next';
import { InputGroupField, InputGroupSearch } from '@/components/ui/input-group';
import { Button } from '@/components/ui/button';
import { ElMessageBox } from 'element-plus';
@@ -13,13 +13,13 @@
v-if="favorite.deleted"
side="top"
:content="t('view.favorite.unavailable_tooltip')">
<i class="ri-error-warning-line"></i>
<AlertTriangle class="h-4 w-4" />
</TooltipWrapper>
<TooltipWrapper
v-if="!isLocalFavorite && favorite.ref?.releaseStatus === 'private'"
side="top"
:content="t('view.favorite.private')">
<i class="ri-lock-line"></i>
<Lock class="h-4 w-4" />
</TooltipWrapper>
</span>
</div>
@@ -57,7 +57,7 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="handlePrimaryDeleteAction">
<i class="ri-delete-bin-line"></i>
<Trash2 class="h-4 w-4" />
</Button>
</TooltipWrapper>
</div>
@@ -73,8 +73,8 @@
:disabled="currentUser.currentAvatar === favorite.id"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="selectAvatarWithConfirmation(favorite.id)"
><i class="ri-check-line"></i
></Button>
><Check class="h-4 w-4"
/></Button>
</TooltipWrapper>
</div>
<div class="favorites-search-card__action">
@@ -87,8 +87,8 @@
variant="destructive"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="handlePrimaryDeleteAction"
><i class="ri-delete-bin-line"></i
></Button>
><Trash2 class="h-4 w-4"
/></Button>
</TooltipWrapper>
<TooltipWrapper v-else side="bottom" :content="t('view.favorite.edit_favorite_tooltip')">
<Button
@@ -96,8 +96,8 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="showFavoriteDialog('avatar', favorite.id)"
><i class="ri-star-line"></i
></Button>
><Star class="h-4 w-4"
/></Button>
</TooltipWrapper>
</div>
</div>
@@ -118,7 +118,7 @@
size="icon-sm"
variant="outline"
@click.stop="handlePrimaryDeleteAction">
<i class="ri-delete-bin-line"></i>
<Trash2 class="h-4 w-4" />
</Button>
</div>
</div>
@@ -127,6 +127,7 @@
</template>
<script setup>
import { AlertTriangle, Check, Lock, Star, Trash2 } from 'lucide-vue-next';
import { Button } from '@/components/ui/button';
import { Checkbox } from '@/components/ui/checkbox';
import { computed } from 'vue';
@@ -21,8 +21,9 @@
:disabled="currentUser.currentAvatar === favorite.id"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="selectAvatarWithConfirmation(favorite.id)">
<i class="ri-check-line"></i
></Button>
<Check class="h-4 w-4" />
></Button
>
</TooltipWrapper>
</div>
<div class="favorites-search-card__action">
@@ -33,14 +34,14 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="showFavoriteDialog('avatar', favorite.id)">
<i class="ri-star-line"></i>
<Star class="h-4 w-4" />
</Button>
<Button
v-else
size="icon-sm"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="showFavoriteDialog('avatar', favorite.id)">
<i class="ri-star-line"></i>
<Star class="h-4 w-4" />
</Button>
</TooltipWrapper>
</div>
@@ -39,7 +39,7 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="handleDeleteFavorite">
<i class="ri-delete-bin-line"></i>
<Trash2 class="h-4 w-4" />
</Button>
</TooltipWrapper>
</div>
@@ -53,8 +53,8 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="showFavoriteDialog('friend', favorite.id)"
><i class="ri-star-line"></i
></Button>
><Star class="h-4 w-4"
/></Button>
</TooltipWrapper>
</div>
</template>
@@ -74,7 +74,7 @@
size="icon-sm"
variant="outline"
@click.stop="handleDeleteFavorite">
<i class="ri-delete-bin-line"></i>
<Trash2 class="h-4 w-4" />
</Button>
</div>
</div>
@@ -83,6 +83,7 @@
</template>
<script setup>
import { Star, Trash2 } from 'lucide-vue-next';
import { Button } from '@/components/ui/button';
import { Checkbox } from '@/components/ui/checkbox';
import { computed } from 'vue';
@@ -2,8 +2,8 @@
<DropdownMenu v-model:open="moveDropdownOpen" style="margin-left: 5px">
<DropdownMenuTrigger as-child>
<Button class="rounded-full w-6 h-6 text-xs" size="icon-sm" variant="ghost"
><i class="ri-arrow-left-line"></i
></Button>
><ArrowLeft class="h-4 w-4"
/></Button>
</DropdownMenuTrigger>
<DropdownMenuContent class="favorites-dropdown">
<span style="font-weight: bold; display: block; text-align: center">
@@ -25,6 +25,7 @@
<script setup>
import { computed, ref } from 'vue';
import { ArrowLeft } from 'lucide-vue-next';
import { Button } from '@/components/ui/button';
import { toast } from 'vue-sonner';
import { useI18n } from 'vue-i18n';
@@ -19,14 +19,14 @@
<span
v-if="favorite.deleted || favorite.ref.releaseStatus === 'private'"
class="favorites-search-card__badges">
<i
<AlertTriangle
v-if="favorite.deleted"
:title="t('view.favorite.unavailable_tooltip')"
class="ri-error-warning-line"></i>
<i
class="h-4 w-4" />
<Lock
v-if="favorite.ref.releaseStatus === 'private'"
:title="t('view.favorite.private')"
class="ri-lock-line"></i>
class="h-4 w-4" />
</span>
</div>
<span class="extra">
@@ -55,7 +55,7 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="handleDeleteFavorite">
<i class="ri-delete-bin-line"></i>
<Trash2 class="h-4 w-4" />
</Button>
</div>
</div>
@@ -69,8 +69,8 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="newInstanceSelfInvite(favorite.id)"
><i class="ri-mail-line"></i
></Button>
><Mail class="h-4 w-4"
/></Button>
</TooltipWrapper>
</div>
<div class="favorites-search-card__action">
@@ -83,8 +83,8 @@
variant="destructive"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="handleDeleteFavorite"
><i class="ri-delete-bin-line"></i
></Button>
><Trash2 class="h-4 w-4"
/></Button>
</TooltipWrapper>
<TooltipWrapper v-else side="top" :content="t('view.favorite.edit_favorite_tooltip')">
<Button
@@ -92,8 +92,8 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="showFavoriteDialog('world', favorite.id)"
><i class="ri-star-line"></i
></Button>
><Star class="h-4 w-4"
/></Button>
</TooltipWrapper>
</div>
</div>
@@ -105,10 +105,10 @@
<div class="favorites-search-card__avatar is-empty"></div>
<div class="favorites-search-card__detail" v-once>
<span>{{ favorite.name || favorite.id }}</span>
<i
<AlertTriangle
v-if="favorite.deleted"
:title="t('view.favorite.unavailable_tooltip')"
class="ri-error-warning-line"></i>
class="h-4 w-4" />
</div>
</div>
<div class="favorites-search-card__actions">
@@ -118,7 +118,7 @@
size="icon-sm"
variant="outline"
@click.stop="handleDeleteFavorite">
<i class="ri-delete-bin-line"></i>
<Trash2 class="h-4 w-4" />
</Button>
</div>
</div>
@@ -127,6 +127,7 @@
</template>
<script setup>
import { AlertTriangle, Lock, Mail, Star, Trash2 } from 'lucide-vue-next';
import { Button } from '@/components/ui/button';
import { Checkbox } from '@/components/ui/checkbox';
import { computed } from 'vue';
@@ -37,7 +37,7 @@
:variant="shiftHeld ? 'destructive' : 'outline'"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="handlePrimaryDeleteAction">
<i class="ri-delete-bin-line"></i>
<Trash2 class="h-4 w-4" />
</Button>
</div>
</div>
@@ -51,8 +51,8 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="newInstanceSelfInvite(favorite.id)"
><i class="ri-mail-line"></i
></Button>
><Mail class="h-4 w-4"
/></Button>
</TooltipWrapper>
</div>
<div class="favorites-search-card__action">
@@ -65,8 +65,8 @@
variant="destructive"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="handleDeleteFavorite"
><i class="ri-delete-bin-line"></i
></Button>
><Trash2 class="h-4 w-4"
/></Button>
</TooltipWrapper>
<TooltipWrapper v-else side="top" :content="t('view.favorite.edit_favorite_tooltip')">
<Button
@@ -74,8 +74,8 @@
variant="outline"
class="favorites-search-card__action-btn rounded-full text-xs h-6 w-6"
@click.stop="showFavoriteDialog('world', favorite.id)"
><i class="ri-star-line"></i
></Button>
><Star class="h-4 w-4"
/></Button>
</TooltipWrapper>
</div>
</div>
@@ -96,7 +96,7 @@
size="icon-sm"
variant="outline"
@click.stop="handleDeleteFavorite">
<i class="ri-delete-bin-line"></i>
<Trash2 class="h-4 w-4" />
</Button>
</div>
</div>
@@ -105,6 +105,7 @@
</template>
<script setup>
import { Mail, Star, Trash2 } from 'lucide-vue-next';
import { Button } from '@/components/ui/button';
import { computed } from 'vue';
import { storeToRefs } from 'pinia';
+7 -11
View File
@@ -1,4 +1,4 @@
import { ArrowUpDown } from 'lucide-vue-next';
import { ArrowUpDown, UserMinus } from 'lucide-vue-next';
import { Button } from '../../components/ui/button';
import { Checkbox } from '../../components/ui/checkbox';
@@ -154,9 +154,7 @@ export const createColumns = ({
}),
size: 100,
sortingFn: sortByNumber((row) => row?.$friendNumber ?? 0),
cell: ({ row }) => (
<span>{row.original?.$friendNumber || ''}</span>
)
cell: ({ row }) => <span>{row.original?.$friendNumber || ''}</span>
},
{
id: 'avatar',
@@ -292,10 +290,7 @@ export const createColumns = ({
{(row.original?.bioLinks ?? [])
.filter(Boolean)
.map((link, index) => (
<TooltipWrapper
key={index}
content={String(link)}
>
<TooltipWrapper key={index} content={String(link)}>
<img
src={getFaviconUrl(link)}
class="h-4 w-4 mr-1 align-middle cursor-pointer"
@@ -425,13 +420,14 @@ export const createColumns = ({
class: 'text-center'
},
cell: ({ row }) => (
<i
class="ri-user-unfollow-line text-destructive"
// TODO(icon): verify unfollow icon replacement
<UserMinus
class="h-4 w-4 text-destructive inline-block"
onClick={(event) => {
event.stopPropagation();
onConfirmDeleteFriend?.(row.original?.id);
}}
></i>
/>
)
}
);
+6 -8
View File
@@ -6,7 +6,7 @@ import {
TooltipProvider,
TooltipTrigger
} from '../../components/ui/tooltip';
import { ArrowRight, ArrowUpDown } from 'lucide-vue-next';
import { ArrowRight, ArrowUpDown, Trash2, X } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { formatDateFilter } from '../../shared/utils';
@@ -136,13 +136,11 @@ export const createColumns = ({ onDelete, onDeletePrompt }) => {
: onDeletePrompt(original)
}
>
<i
class={
shiftHeld.value
? 'ri-close-line text-red-600'
: 'ri-delete-bin-line'
}
/>
{shiftHeld.value ? (
<X class="h-4 w-4 text-red-600" />
) : (
<Trash2 class="h-4 w-4" />
)}
</button>
</div>
);
@@ -11,7 +11,7 @@
</div>
<div class="friend-card__body">
<div class="friend-card__signature" :title="friend.ref?.statusDescription">
<i v-if="friend.ref?.statusDescription" class="ri-pencil-line mr-0.5" style="opacity: 0.7"></i>
<Pencil v-if="friend.ref?.statusDescription" class="h-3.5 w-3.5 mr-0.5" style="opacity: 0.7" />
{{ friend.ref?.statusDescription || '&nbsp;' }}
</div>
<div v-if="displayInstanceInfo" @click.stop class="friend-card__world" :title="friend.worldName">
@@ -26,8 +26,9 @@
</template>
<script setup>
import { computed } from 'vue';
import { Card } from '@/components/ui/card';
import { Pencil } from 'lucide-vue-next';
import { computed } from 'vue';
import { userImage, userStatusClass } from '../../../shared/utils';
import { useUserStore } from '../../../stores';
+7 -9
View File
@@ -7,7 +7,7 @@ import {
TooltipProvider,
TooltipTrigger
} from '../../components/ui/tooltip';
import { ArrowUpDown } from 'lucide-vue-next';
import { ArrowUpDown, FileText, Trash2, X } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { formatDateFilter, openExternalLink } from '../../shared/utils';
@@ -268,13 +268,11 @@ export const createColumns = ({ getCreatedAt, onDelete, onDeletePrompt }) => {
: onDeletePrompt(original)
}
>
<i
class={
shiftHeld.value
? 'ri-close-line text-red-600'
: 'ri-delete-bin-line'
}
/>
{shiftHeld.value ? (
<X class="h-4 w-4 text-red-600" />
) : (
<Trash2 class="h-4 w-4" />
)}
</button>
) : null}
{canShowPrevious ? (
@@ -290,7 +288,7 @@ export const createColumns = ({ getCreatedAt, onDelete, onDeletePrompt }) => {
)
}
>
<i class="ri-file-list-2-line" />
<FileText class="h-4 w-4" />
</button>
</TooltipTrigger>
<TooltipContent side="top">
+3 -3
View File
@@ -147,8 +147,8 @@
variant="ghost"
style="margin-left: 10px"
@click.stop="clickDeleteSavedLogin(user.user.id)"
><i class="ri-delete-bin-line h-3 w-3"></i
></Button>
><Trash2 class="h-3 w-3"
/></Button>
</div>
</div>
</div>
@@ -179,7 +179,7 @@
<script setup>
import { Field, FieldContent, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field';
import { onBeforeMount, onBeforeUnmount, ref, watch } from 'vue';
import { CircleArrowDown, Route } from 'lucide-vue-next';
import { CircleArrowDown, Route, Trash2 } from 'lucide-vue-next';
import { Field as VeeField, useForm } from 'vee-validate';
import { useRoute, useRouter } from 'vue-router';
import { Button } from '@/components/ui/button';
+6 -8
View File
@@ -6,7 +6,7 @@ import {
TooltipProvider,
TooltipTrigger
} from '../../components/ui/tooltip';
import { ArrowUpDown } from 'lucide-vue-next';
import { ArrowUpDown, Trash2, X } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { formatDateFilter } from '../../shared/utils';
@@ -143,13 +143,11 @@ export const createColumns = ({ onDelete, onDeletePrompt }) => {
: onDeletePrompt(original)
}
>
<i
class={
shiftHeld.value
? 'ri-close-line text-red-600'
: 'ri-delete-bin-line'
}
/>
{shiftHeld.value ? (
<X class="h-4 w-4 text-red-600" />
) : (
<Trash2 class="h-4 w-4" />
)}
</button>
</div>
);
+42 -42
View File
@@ -7,7 +7,18 @@ import {
TooltipProvider,
TooltipTrigger
} from '../../components/ui/tooltip';
import { ArrowUpDown } from 'lucide-vue-next';
import {
ArrowUpDown,
Ban,
BellOff,
Check,
Link,
MessageCircle,
Reply,
Tag,
Trash2,
X
} from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { checkCanInvite, formatDateFilter } from '../../shared/utils';
@@ -58,25 +69,23 @@ export const createColumns = ({
);
};
const getResponseIconClass = (response, notificationType) => {
const getResponseIcon = (response, notificationType) => {
if (response?.type === 'link') {
return 'ri-link-m';
return Link;
}
switch (response?.icon) {
case 'check':
return 'ri-check-line';
return Check;
case 'cancel':
return 'ri-close-line';
return X;
case 'ban':
return 'ri-forbid-2-line';
return Ban;
case 'bell-slash':
return 'ri-notification-off-line';
return BellOff;
case 'reply':
return notificationType === 'boop'
? 'ri-chat-1-line'
: 'ri-reply-line';
return notificationType === 'boop' ? MessageCircle : Reply;
default:
return 'ri-price-tag-3-line';
return Tag;
}
};
@@ -532,7 +541,7 @@ export const createColumns = ({
)
}
>
<i class="ri-check-line" />
<Check class="h-4 w-4" />
</button>
</TooltipTrigger>
<TooltipContent side="top">
@@ -555,7 +564,7 @@ export const createColumns = ({
)
}
>
<i class="ri-chat-1-line" />
<MessageCircle class="h-4 w-4" />
</button>
</TooltipTrigger>
<TooltipContent side="top">
@@ -582,7 +591,7 @@ export const createColumns = ({
)
}
>
<i class="ri-check-line" />
<Check class="h-4 w-4" />
</button>
</TooltipTrigger>
<TooltipContent side="top">
@@ -603,7 +612,7 @@ export const createColumns = ({
)
}
>
<i class="ri-chat-1-line" />
<MessageCircle class="h-4 w-4" />
</button>
</TooltipTrigger>
<TooltipContent side="top">
@@ -641,11 +650,10 @@ export const createColumns = ({
);
};
const iconClass =
getResponseIconClass(
response,
original.type
);
const ResponseIcon = getResponseIcon(
response,
original.type
);
return (
<TooltipProvider
@@ -658,11 +666,7 @@ export const createColumns = ({
class="inline-flex h-6 ml-1 items-center justify-center text-muted-foreground hover:text-foreground"
onClick={onClick}
>
<i
class={
iconClass
}
/>
<ResponseIcon class="h-4 w-4" />
</button>
</TooltipTrigger>
<TooltipContent side="top">
@@ -693,11 +697,11 @@ export const createColumns = ({
)
}
>
<i
<X
class={
shiftHeld.value
? 'ri-close-line text-red-600'
: 'ri-close-line'
? 'h-4 w-4 text-red-600'
: 'h-4 w-4'
}
/>
</button>
@@ -726,13 +730,11 @@ export const createColumns = ({
)
}
>
<i
class={
shiftHeld.value
? 'ri-close-line text-red-600'
: 'ri-delete-bin-line'
}
/>
{shiftHeld.value ? (
<X class="h-4 w-4 text-red-600" />
) : (
<Trash2 class="h-4 w-4" />
)}
</button>
</TooltipTrigger>
<TooltipContent side="top">
@@ -759,13 +761,11 @@ export const createColumns = ({
)
}
>
<i
class={
shiftHeld.value
? 'ri-close-line text-red-600'
: 'ri-delete-bin-line'
}
/>
{shiftHeld.value ? (
<X class="h-4 w-4 text-red-600" />
) : (
<Trash2 class="h-4 w-4" />
)}
</button>
</TooltipTrigger>
<TooltipContent side="top">
+4 -4
View File
@@ -59,7 +59,7 @@
</Badge>
<TooltipWrapper v-if="currentInstanceWorld.isPC" side="top" content="PC">
<Badge class="x-tag-platform-pc" variant="outline" style="margin-right: 5px"
><i class="ri-computer-line"></i>
><Monitor class="h-4 w-4" />
<span
v-if="currentInstanceWorld.bundleSizes['standalonewindows']"
:class="['x-grey', 'x-tag-platform-pc', 'x-tag-border-left']"
@@ -69,7 +69,7 @@
</TooltipWrapper>
<TooltipWrapper v-if="currentInstanceWorld.isQuest" side="top" content="Android">
<Badge class="x-tag-platform-quest" variant="outline" style="margin-right: 5px"
><i class="ri-android-line"></i>
><Smartphone class="h-4 w-4" />
<span
v-if="currentInstanceWorld.bundleSizes['android']"
:class="['x-grey', 'x-tag-platform-quest', 'x-tag-border-left']"
@@ -79,7 +79,7 @@
</TooltipWrapper>
<TooltipWrapper v-if="currentInstanceWorld.isIos" side="top" content="iOS">
<Badge class="x-tag-platform-ios" variant="outline" style="margin-right: 5px"
><i class="ri-apple-line"></i>
><Apple class="h-4 w-4" />
<span
v-if="currentInstanceWorld.bundleSizes['ios']"
:class="['x-grey', 'x-tag-platform-ios', 'x-tag-border-left']"
@@ -167,7 +167,7 @@
<script setup>
import { computed, defineAsyncComponent, onActivated, onMounted, ref, watch } from 'vue';
import { Home } from 'lucide-vue-next';
import { Apple, Home, Monitor, Smartphone } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { useI18n } from 'vue-i18n';
+11 -5
View File
@@ -1,7 +1,13 @@
import Timer from '../../components/Timer.vue';
import { Button } from '../../components/ui/button';
import { TooltipWrapper } from '../../components/ui/tooltip';
import { ArrowUpDown } from 'lucide-vue-next';
import {
Apple,
ArrowUpDown,
IdCard,
Monitor,
Smartphone
} from 'lucide-vue-next';
import {
getFaviconUrl,
@@ -285,7 +291,7 @@ export const createColumns = ({
) : null}
{r?.ageVerified ? (
<TooltipWrapper side="left" content="18+ Verified">
<i class="ri-id-card-line x-tag-age-verification"></i>
<IdCard class="h-4 w-4 x-tag-age-verification" />
</TooltipWrapper>
) : null}
</div>
@@ -304,11 +310,11 @@ export const createColumns = ({
const platformIcon =
platform === 'standalonewindows' ? (
<i class="ri-computer-line x-tag-platform-pc" />
<Monitor class="h-4 w-4 x-tag-platform-pc" />
) : platform === 'android' ? (
<i class="ri-android-line x-tag-platform-quest" />
<Smartphone class="h-4 w-4 x-tag-platform-quest" />
) : platform === 'ios' ? (
<i class="ri-apple-line x-tag-platform-ios" />
<Apple class="h-4 w-4 x-tag-platform-ios" />
) : platform ? (
<span>{String(platform)}</span>
) : null;
@@ -47,7 +47,7 @@
cursor: pointer;
"
@click="deleteChatboxUserBlacklist(user[0])">
<i class="ri-close-line" style="font-size: 12px; line-height: 1"></i>
<X class="h-3 w-3" style="line-height: 1" />
</button>
</Badge>
</div>
@@ -57,6 +57,7 @@
<script setup>
import { Button } from '@/components/ui/button';
import { InputGroupAction } from '@/components/ui/input-group';
import { X } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { useI18n } from 'vue-i18n';
@@ -159,10 +159,10 @@
:long-label="true"
@change="changeTranslationAPI('VRCX_translationAPI')" />
<div class="options-container-item">
<Button size="sm" variant="outline" @click="showTranslationApiDialog"
><i class="ri-translate-2" style="margin-right: 5px"></i
>{{ t('view.settings.advanced.advanced.translation_api.translation_api_key') }}</Button
>
<Button size="sm" variant="outline" @click="showTranslationApiDialog">
<Languages class="h-4 w-4" style="margin-right: 5px" />
{{ t('view.settings.advanced.advanced.translation_api.translation_api_key') }}
</Button>
</div>
</div>
<div class="options-container">
@@ -384,7 +384,7 @@
</template>
<script setup>
import { Folder, Package, RefreshCcw, Settings, Trash2 } from 'lucide-vue-next';
import { Folder, Languages, Package, RefreshCcw, Settings, Trash2 } from 'lucide-vue-next';
import { computed, reactive, ref } from 'vue';
import { Button } from '@/components/ui/button';
import { ButtonGroup } from '@/components/ui/button-group';
+2 -2
View File
@@ -41,7 +41,7 @@
variant="ghost"
class="mr-1 w-6 h-6 text-xs"
@click.stop="$emit('confirm-delete-friend', friend.id)"
><i class="ri-delete-bin-2-line"></i>
><Trash2 class="h-4 w-4" />
</Button>
</template>
@@ -60,7 +60,7 @@
</template>
<script setup>
import { Loader2, AlertTriangle } from 'lucide-vue-next';
import { AlertTriangle, Loader2, Trash2 } from 'lucide-vue-next';
import { Button } from '@/components/ui/button';
import { computed } from 'vue';
import { storeToRefs } from 'pinia';
+29 -14
View File
@@ -6,14 +6,16 @@
<div class="tool-categories">
<div class="tool-category">
<div class="category-header" @click="toggleCategory('group')">
<ArrowRight class="rotation-transition" :class="{ 'is-rotated': !categoryCollapsed['group'] }" />
<ArrowRight
class="rotation-transition"
:class="{ 'is-rotated': !categoryCollapsed['group'] }" />
<span class="category-title">{{ t('view.tools.group.header') }}</span>
</div>
<div class="tools-grid" v-show="!categoryCollapsed['group']">
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="showGroupCalendarDialog">
<div class="tool-icon">
<i class="ri-calendar-event-line"></i>
<CalendarDays />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.group.calendar') }}</div>
@@ -26,14 +28,16 @@
<div class="tool-category">
<div class="category-header" @click="toggleCategory('image')">
<ArrowRight class="rotation-transition" :class="{ 'is-rotated': !categoryCollapsed['image'] }" />
<ArrowRight
class="rotation-transition"
:class="{ 'is-rotated': !categoryCollapsed['image'] }" />
<span class="category-title">{{ t('view.tools.pictures.header') }}</span>
</div>
<div class="tools-grid" v-show="!categoryCollapsed['image']">
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="showScreenshotMetadataPage">
<div class="tool-icon">
<i class="ri-screenshot-2-line"></i>
<Camera />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.pictures.screenshot') }}</div>
@@ -46,7 +50,7 @@
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="showGalleryPage">
<div class="tool-icon">
<i class="ri-multi-image-line"></i>
<Images />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.pictures.inventory') }}</div>
@@ -59,7 +63,7 @@
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="openVrcPhotosFolder">
<div class="tool-icon">
<i class="ri-folder-image-line"></i>
<FolderOpen />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.pictures.pictures.vrc_photos') }}</div>
@@ -72,7 +76,7 @@
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="openVrcScreenshotsFolder">
<div class="tool-icon">
<i class="ri-folder-image-line"></i>
<FolderOpen />
</div>
<div class="tool-info">
<div class="tool-name">
@@ -97,7 +101,7 @@
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="showExportDiscordNamesDialog">
<div class="tool-icon">
<i class="ri-discord-line"></i>
<MessageSquare />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.export.discord_names') }}</div>
@@ -110,7 +114,7 @@
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="showNoteExportDialog">
<div class="tool-icon">
<i class="ri-user-shared-line"></i>
<UserCheck />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.export.export_notes') }}</div>
@@ -124,7 +128,7 @@
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="showExportFriendsListDialog">
<div class="tool-icon">
<i class="ri-user-shared-line"></i>
<UserCheck />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.export.export_friend_list') }}</div>
@@ -137,7 +141,7 @@
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="showExportAvatarsListDialog">
<div class="tool-icon">
<i class="ri-user-shared-line"></i>
<UserCheck />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.export.export_own_avatars') }}</div>
@@ -152,14 +156,16 @@
<div class="tool-category">
<div class="category-header" @click="toggleCategory('other')">
<ArrowRight class="rotation-transition" :class="{ 'is-rotated': !categoryCollapsed['other'] }" />
<ArrowRight
class="rotation-transition"
:class="{ 'is-rotated': !categoryCollapsed['other'] }" />
<span class="category-title">{{ t('view.tools.other.header') }}</span>
</div>
<div class="tools-grid" v-show="!categoryCollapsed['other']">
<Card class="tool-card p-0 gap-0">
<div class="tool-content" @click="showEditInviteMessageDialog">
<div class="tool-icon">
<i class="ri-edit-box-line"></i>
<SquarePen />
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.other.edit_invite_message') }}</div>
@@ -195,9 +201,18 @@
</template>
<script setup>
import {
ArrowRight,
CalendarDays,
Camera,
FolderOpen,
Images,
MessageSquare,
SquarePen,
UserCheck
} from 'lucide-vue-next';
import { computed, defineAsyncComponent, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { ArrowRight } from 'lucide-vue-next';
import { Card } from '@/components/ui/card';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';