replaced a bunch of ti-*

This commit is contained in:
dakkar 2024-06-22 13:34:55 +01:00
parent fc00c7401e
commit df26b6501d
104 changed files with 267 additions and 213 deletions

View file

@ -21,8 +21,8 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<MkNoteSub v-if="appearNote.reply && !renoteCollapsed && !inReplyToCollapsed" :note="appearNote.reply" :class="$style.replyTo"/>
<div v-if="pinned" :class="$style.tip"><i class="ti ti-pin"></i> {{ i18n.ts.pinnedNote }}</div>
<!--<div v-if="appearNote._prId_" class="tip"><i class="ph-megaphone ph-bold ph-lg"></i> {{ i18n.ts.promotion }}<button class="_textButton hide" @click="readPromo()">{{ i18n.ts.hideThisNote }} <i class="ti ti-x"></i></button></div>-->
<!--<div v-if="appearNote._featuredId_" class="tip"><i class="ph-lightning ph-bold ph-lg"></i> {{ i18n.ts.featured }}</div>-->
<!--<div v-if="appearNote._prId_" class="tip"><i class="ti ti-speakerphone"></i> {{ i18n.ts.promotion }}<button class="_textButton hide" @click="readPromo()">{{ i18n.ts.hideThisNote }} <i class="ti ti-x"></i></button></div>-->
<!--<div v-if="appearNote._featuredId_" class="tip"><i class="ti ti-bolt"></i> {{ i18n.ts.featured }}</div>-->
<div v-if="isRenote" :class="$style.renote">
<div v-if="note.channel" :class="$style.colorBar" :style="{ background: note.channel.color }"></div>
<MkAvatar :class="$style.renoteAvatar" :user="note.user" link preview/>
@ -42,7 +42,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<span v-if="note.visibility !== 'public'" style="margin-left: 0.5em;" :title="i18n.ts._visibility[note.visibility]">
<i v-if="note.visibility === 'home'" class="ti ti-home"></i>
<i v-else-if="note.visibility === 'followers'" class="ti ti-lock"></i>
<i v-else-if="note.visibility === 'specified'" ref="specified" class="ph-envelope ph-bold ph-lg"></i>
<i v-else-if="note.visibility === 'specified'" ref="specified" class="ti ti-mail"></i>
</span>
<span v-if="note.localOnly" style="margin-left: 0.5em;" :title="i18n.ts._visibility['disableFederation']"><i class="ti ti-rocket-off"></i></span>
<span v-if="note.channel" style="margin-left: 0.5em;" :title="note.channel.name"><i class="ti ti-device-tv"></i></span>
@ -132,7 +132,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<p v-if="appearNote.renoteCount > 0" :class="$style.footerButtonCount">{{ number(appearNote.renoteCount) }}</p>
</button>
<button v-else :class="$style.footerButton" class="_button" disabled>
<i class="ph-prohibit ph-bold ph-lg"></i>
<i class="ti ti-ban"></i>
</button>
<button
v-if="canRenote && !props.mock"
@ -155,7 +155,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<p v-if="(appearNote.reactionAcceptance === 'likeOnly' || defaultStore.state.showReactionsCount) && appearNote.reactionCount > 0" :class="$style.footerButtonCount">{{ number(appearNote.reactionCount) }}</p>
</button>
<button v-if="defaultStore.state.showClipButtonInNoteFooter" ref="clipButton" :class="$style.footerButton" class="_button" @mousedown="clip()">
<i class="ph-paperclip ph-bold ph-lg"></i>
<i class="ti ti-paperclip"></i>
</button>
<button ref="menuButton" :class="$style.footerButton" class="_button" @mousedown="showMenu()">
<i class="ti ti-dots"></i>

View file

@ -38,7 +38,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<span v-if="note.visibility !== 'public'" style="margin-left: 0.5em;" :title="i18n.ts._visibility[note.visibility]">
<i v-if="note.visibility === 'home'" class="ti ti-home"></i>
<i v-else-if="note.visibility === 'followers'" class="ti ti-lock"></i>
<i v-else-if="note.visibility === 'specified'" ref="specified" class="ph-envelope ph-bold ph-lg"></i>
<i v-else-if="note.visibility === 'specified'" ref="specified" class="ti ti-mail"></i>
</span>
<span v-if="note.localOnly" style="margin-left: 0.5em;" :title="i18n.ts._visibility['disableFederation']"><i class="ti ti-rocket-off"></i></span>
</div>
@ -56,7 +56,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<span v-if="appearNote.visibility !== 'public'" style="margin-left: 0.5em;" :title="i18n.ts._visibility[appearNote.visibility]">
<i v-if="appearNote.visibility === 'home'" class="ti ti-home"></i>
<i v-else-if="appearNote.visibility === 'followers'" class="ti ti-lock"></i>
<i v-else-if="appearNote.visibility === 'specified'" ref="specified" class="ph-envelope ph-bold ph-lg"></i>
<i v-else-if="appearNote.visibility === 'specified'" ref="specified" class="ti ti-mail"></i>
</span>
<span v-if="appearNote.updatedAt" ref="menuVersionsButton" style="margin-left: 0.5em;" title="Edited" @mousedown="menuVersions()"><i class="ph-pencil-simple ph-bold ph-lg"></i></span>
<span v-if="appearNote.localOnly" style="margin-left: 0.5em;" :title="i18n.ts._visibility['disableFederation']"><i class="ti ti-rocket-off"></i></span>
@ -133,7 +133,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<p v-if="appearNote.renoteCount > 0" :class="$style.noteFooterButtonCount">{{ number(appearNote.renoteCount) }}</p>
</button>
<button v-else class="_button" :class="$style.noteFooterButton" disabled>
<i class="ph-prohibit ph-bold ph-lg"></i>
<i class="ti ti-ban"></i>
</button>
<button
v-if="canRenote"
@ -155,7 +155,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<p v-if="(appearNote.reactionAcceptance === 'likeOnly' || defaultStore.state.showReactionsCount) && appearNote.reactionCount > 0" :class="$style.noteFooterButtonCount">{{ number(appearNote.reactionCount) }}</p>
</button>
<button v-if="defaultStore.state.showClipButtonInNoteFooter" ref="clipButton" class="_button" :class="$style.noteFooterButton" @mousedown="clip()">
<i class="ph-paperclip ph-bold ph-lg"></i>
<i class="ti ti-paperclip"></i>
</button>
<button ref="menuButton" class="_button" :class="$style.noteFooterButton" @mousedown="showMenu()">
<i class="ti ti-dots"></i>

View file

@ -26,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<span v-if="note.visibility !== 'public'" style="margin-left: 0.5em;" :title="i18n.ts._visibility[note.visibility]">
<i v-if="note.visibility === 'home'" class="ti ti-home"></i>
<i v-else-if="note.visibility === 'followers'" class="ti ti-lock"></i>
<i v-else-if="note.visibility === 'specified'" ref="specified" class="ph-envelope ph-bold ph-lg"></i>
<i v-else-if="note.visibility === 'specified'" ref="specified" class="ti ti-mail"></i>
</span>
<span v-if="note.updatedAt" ref="menuVersionsButton" style="margin-left: 0.5em; cursor: pointer;" title="Edited" @mousedown="menuVersions()"><i class="ph-pencil-simple ph-bold ph-lg"></i></span>
<span v-if="note.localOnly" style="margin-left: 0.5em;" :title="i18n.ts._visibility['disableFederation']"><i class="ti ti-rocket-off"></i></span>

View file

@ -68,7 +68,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkNoteSub v-for="reply in replies" :key="reply.id" :note="reply" :class="$style.reply" :detail="true" :depth="depth + 1" :expandAllCws="props.expandAllCws" :onDeleteCallback="removeReply"/>
</template>
<div v-else :class="$style.more">
<MkA class="_link" :to="notePage(note)">{{ i18n.ts.continueThread }} <i class="ph-caret-double-right ph-bold ph-lg"></i></MkA>
<MkA class="_link" :to="notePage(note)">{{ i18n.ts.continueThread }} <i class="ti ti-chevron-double-right"></i></MkA>
</div>
</div>
<div v-else :class="$style.muted" @click="muted = false">

View file

@ -34,13 +34,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<i v-else-if="notification.type === 'followRequestAccepted'" class="ti ti-check"></i>
<i v-else-if="notification.type === 'renote'" class="ti ti-repeat"></i>
<i v-else-if="notification.type === 'reply'" class="ti ti-arrow-back-up"></i>
<i v-else-if="notification.type === 'mention'" class="ph-at ph-bold ph-lg"></i>
<i v-else-if="notification.type === 'mention'" class="ti ti-at"></i>
<i v-else-if="notification.type === 'quote'" class="ti ti-quote"></i>
<i v-else-if="notification.type === 'pollEnded'" class="ph-chart-bar-horizontal ph-bold ph-lg"></i>
<i v-else-if="notification.type === 'achievementEarned'" class="ph-trophy ph-bold ph-lg"></i>
<i v-else-if="notification.type === 'pollEnded'" class="ti ti-chart-arrows"></i>
<i v-else-if="notification.type === 'achievementEarned'" class="ti ti-medal"></i>
<template v-else-if="notification.type === 'roleAssigned'">
<img v-if="notification.role.iconUrl" style="height: 1.3em; vertical-align: -22%;" :src="notification.role.iconUrl" alt=""/>
<i v-else class="ph-seal-check ph-bold ph-lg"></i>
<i v-else class="ti ti-badges"></i>
</template>
<i v-else-if="notification.type === 'edited'" class="ph-pencil ph-bold ph-lg"></i>
<!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 -->

View file

@ -117,7 +117,7 @@ const contextmenu = computed(() => ([{
text: i18n.ts.showInPage,
action: expand,
}, {
icon: 'ph-frame-corners ph-bold ph-lg',
icon: 'ti ti-window-maximize',
text: i18n.ts.popout,
action: popout,
}, {

View file

@ -22,12 +22,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<form @submit.prevent="done">
<div class="_gaps">
<MkInput ref="passwordInput" v-model="password" :placeholder="i18n.ts.password" type="password" autocomplete="current-password webauthn" required :withPasswordToggle="true">
<template #prefix><i class="ph-password ph-bold ph-lg"></i></template>
<template #prefix><i class="ti ti-password"></i></template>
</MkInput>
<MkInput v-if="$i.twoFactorEnabled" v-model="token" type="text" :pattern="isBackupCode ? '^[A-Z0-9]{32}$' :'^[0-9]{6}$'" autocomplete="one-time-code" required :spellcheck="false" :inputmode="isBackupCode ? undefined : 'numeric'">
<template #label>{{ i18n.ts.token }} ({{ i18n.ts['2fa'] }})</template>
<template #prefix><i v-if="isBackupCode" class="ph-keyhole ph-bold ph-lg"></i><i v-else class="ph-numpad ph-bold ph-lg"></i></template>
<template #prefix><i v-if="isBackupCode" class="ti ti-key"></i><i v-else class="ti ti-123"></i></template>
<template #caption><button class="_textButton" type="button" @click="isBackupCode = !isBackupCode">{{ isBackupCode ? i18n.ts.useTotp : i18n.ts.useBackupCode }}</button></template>
</MkInput>

View file

@ -21,10 +21,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.headerRight">
<template v-if="!(channel != null && fixed)">
<button v-if="channel == null" ref="visibilityButton" v-click-anime v-tooltip="i18n.ts.visibility" :class="['_button', $style.headerRightItem, $style.visibility]" @click="setVisibility">
<span v-if="visibility === 'public'"><i class="ph-globe-hemisphere-west ph-bold ph-lg"></i></span>
<span v-if="visibility === 'public'"><i class="ti ti-world"></i></span>
<span v-if="visibility === 'home'"><i class="ti ti-home"></i></span>
<span v-if="visibility === 'followers'"><i class="ti ti-lock"></i></span>
<span v-if="visibility === 'specified'"><i class="ph-envelope ph-bold ph-lg"></i></span>
<span v-if="visibility === 'specified'"><i class="ti ti-mail"></i></span>
<span :class="$style.headerRightButtonText">{{ i18n.ts._visibility[visibility] }}</span>
</button>
<button v-else class="_button" :class="[$style.headerRightItem, $style.visibility]" disabled>
@ -80,13 +80,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<footer :class="$style.footer">
<div :class="$style.footerLeft">
<button v-tooltip="i18n.ts.attachFile" class="_button" :class="$style.footerButton" @click="chooseFileFrom"><i class="ph-image-square ph-bold ph-lg-plus"></i></button>
<button v-tooltip="i18n.ts.poll" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: poll }]" @click="togglePoll"><i class="ph-chart-bar-horizontal ph-bold ph-lg"></i></button>
<button v-tooltip="i18n.ts.poll" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: poll }]" @click="togglePoll"><i class="ti ti-chart-arrows"></i></button>
<button v-tooltip="i18n.ts.useCw" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: useCw }]" @click="useCw = !useCw"><i class="ti ti-eye-off"></i></button>
<button v-tooltip="i18n.ts.mention" class="_button" :class="$style.footerButton" @click="insertMention"><i class="ph-at ph-bold ph-lg"></i></button>
<button v-tooltip="i18n.ts.mention" class="_button" :class="$style.footerButton" @click="insertMention"><i class="ti ti-at"></i></button>
<button v-tooltip="i18n.ts.hashtags" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: withHashtags }]" @click="withHashtags = !withHashtags"><i class="ti ti-hash"></i></button>
<button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugins" class="_button" :class="$style.footerButton" @click="showActions"><i class="ph-plug ph-bold ph-lg"></i></button>
<button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugins" class="_button" :class="$style.footerButton" @click="showActions"><i class="ti ti-plug"></i></button>
<button v-tooltip="i18n.ts.emoji" :class="['_button', $style.footerButton]" @click="insertEmoji"><i class="ti ti-mood-happy"></i></button>
<button v-if="showAddMfmFunction" v-tooltip="i18n.ts.addMfmFunction" :class="['_button', $style.footerButton]" @click="insertMfmFunction"><i class="ph-palette ph-bold ph-lg"></i></button>
<button v-if="showAddMfmFunction" v-tooltip="i18n.ts.addMfmFunction" :class="['_button', $style.footerButton]" @click="insertMfmFunction"><i class="ti ti-palette"></i></button>
</div>
<div :class="$style.footerRight">
<button v-tooltip="i18n.ts.previewNoteText" class="_button" :class="[$style.footerButton, { [$style.previewButtonActive]: showPreview }]" @click="showPreview = !showPreview"><i class="ti ti-eye"></i></button>

View file

@ -145,11 +145,11 @@ function showFileMenu(file: Misskey.entities.DriveFile, ev: MouseEvent): void {
action: () => { toggleSensitive(file); },
}, {
text: i18n.ts.describeFile,
icon: 'ph-text-indent ph-bold ph-lg',
icon: 'ti ti-text-caption',
action: () => { describe(file); },
}, ...isImage ? [{
text: i18n.ts.cropImage,
icon: 'ph-crop ph-bold ph-lg',
icon: 'ti ti-crop',
action: () : void => { crop(file); },
}] : [], {
type: 'divider',

View file

@ -11,9 +11,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<img :class="$style.badge" :src="role.iconUrl"/>
</template>
<template v-else>
<i v-if="role.isAdministrator" class="ph-crown ph-bold ph-lg" style="color: var(--accent);"></i>
<i v-if="role.isAdministrator" class="ti ti-crown" style="color: var(--accent);"></i>
<i v-else-if="role.isModerator" class="ti ti-shield" style="color: var(--accent);"></i>
<i v-else class="ph-user ph-bold ph-lg" style="opacity: 0.7;"></i>
<i v-else class="ti ti-user" style="opacity: 0.7;"></i>
</template>
</span>
<span :class="$style.name">{{ role.name }}</span>

View file

@ -38,7 +38,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkInput>
<MkInput v-model="token" type="text" :pattern="isBackupCode ? '^[A-Z0-9]{32}$' :'^[0-9]{6}$'" autocomplete="one-time-code" required :spellcheck="false" :inputmode="isBackupCode ? undefined : 'numeric'">
<template #label>{{ i18n.ts.token }} ({{ i18n.ts['2fa'] }})</template>
<template #prefix><i v-if="isBackupCode" class="ph-keyhole ph-bold ph-lg"></i><i v-else class="ph-numpad ph-bold ph-lg"></i></template>
<template #prefix><i v-if="isBackupCode" class="ti ti-key"></i><i v-else class="ti ti-123"></i></template>
<template #caption><button class="_textButton" type="button" @click="isBackupCode = !isBackupCode">{{ isBackupCode ? i18n.ts.useTotp : i18n.ts.useBackupCode }}</button></template>
</MkInput>
<MkButton type="submit" :disabled="signing" large primary rounded style="margin: 0 auto;">{{ signing ? i18n.ts.loggingIn : i18n.ts.login }}</MkButton>

View file

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div>
<div :class="$style.banner">
<i class="ph-user-list ph-bold ph-lg"></i>
<i class="ti ti-user-edit"></i>
</div>
<MkSpacer :marginMin="20" :marginMax="32">
<form class="_gaps_m" autocomplete="new-password" @submit.prevent="onSubmit">
@ -31,7 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkInput>
<MkInput v-if="instance.emailRequiredForSignup" v-model="email" :debounce="true" type="email" :spellcheck="false" required data-cy-signup-email @update:modelValue="onChangeEmail">
<template #label>{{ i18n.ts.emailAddress }} <div v-tooltip:dialog="i18n.ts._signup.emailAddressInfo" class="_button _help"><i class="ti ti-help-circle"></i></div></template>
<template #prefix><i class="ph-envelope ph-bold ph-lg"></i></template>
<template #prefix><i class="ti ti-mail"></i></template>
<template #caption>
<span v-if="emailState === 'wait'" style="color:#999"><MkLoading :em="true"/> {{ i18n.ts.checking }}</span>
<span v-else-if="emailState === 'ok'" style="color: var(--success)"><i class="ti ti-check ti-fw"></i> {{ i18n.ts.available }}</span>

View file

@ -11,11 +11,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #label>{{ i18n.ts.visibility }}</template>
<div class="_gaps">
<div>{{ i18n.ts._initialTutorial._postNote._visibility.description }}</div>
<div><i class="ph-globe-hemisphere-west ph-bold ph-lg"></i> <b>{{ i18n.ts._visibility.public }}</b> {{ i18n.ts._initialTutorial._postNote._visibility.public }}</div>
<div><i class="ti ti-world"></i> <b>{{ i18n.ts._visibility.public }}</b> {{ i18n.ts._initialTutorial._postNote._visibility.public }}</div>
<div><i class="ti ti-home"></i> <b>{{ i18n.ts._visibility.home }}</b> {{ i18n.ts._initialTutorial._postNote._visibility.home }}</div>
<div><i class="ti ti-lock"></i> <b>{{ i18n.ts._visibility.followers }}</b> {{ i18n.ts._initialTutorial._postNote._visibility.followers }}</div>
<div class="_gaps_s">
<div><i class="ph-envelope ph-bold ph-lg"></i> <b>{{ i18n.ts._visibility.specified }}</b> {{ i18n.ts._initialTutorial._postNote._visibility.direct }}</div>
<div><i class="ti ti-mail"></i> <b>{{ i18n.ts._visibility.specified }}</b> {{ i18n.ts._initialTutorial._postNote._visibility.direct }}</div>
<MkInfo :warn="true">
<b>{{ i18n.ts._initialTutorial._postNote._visibility.doNotSendConfidencialOnDirect1 }}</b> {{ i18n.ts._initialTutorial._postNote._visibility.doNotSendConfidencialOnDirect2 }}
</MkInfo>

View file

@ -10,7 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div><i class="ti ti-home"></i> <b>{{ i18n.ts._timelines.home }}</b> {{ i18n.ts._initialTutorial._timeline.home }}</div>
<div><i class="ti ti-planet"></i> <b>{{ i18n.ts._timelines.local }}</b> {{ i18n.ts._initialTutorial._timeline.local }}</div>
<div><i class="ph-rocket-launch ph-bold ph-lg"></i> <b>{{ i18n.ts._timelines.social }}</b> {{ i18n.ts._initialTutorial._timeline.social }}</div>
<div><i class="ph-globe-hemisphere-west ph-bold ph-lg"></i> <b>{{ i18n.ts._timelines.global }}</b> {{ i18n.ts._initialTutorial._timeline.global }}</div>
<div><i class="ti ti-world"></i> <b>{{ i18n.ts._timelines.global }}</b> {{ i18n.ts._initialTutorial._timeline.global }}</div>
</div>
<div class="_gaps_s">
<div>{{ i18n.ts._initialTutorial._timeline.description2 }}</div>

View file

@ -67,7 +67,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-if="showActions">
<div v-if="tweetId" :class="$style.action">
<MkButton :small="true" inline @click="tweetExpanded = true">
<i class="ph-twitter-logo ph-bold ph-lg"></i> {{ i18n.ts.expandTweet }}
<i class="ti ti-brand-x"></i> {{ i18n.ts.expandTweet }}
</MkButton>
</div>
<div v-if="!playerEnabled && player.url" :class="$style.action">
@ -75,7 +75,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<i class="ti ti-player-play"></i> {{ i18n.ts.enablePlayer }}
</MkButton>
<MkButton v-if="!isMobile" :small="true" inline @click="openPlayer()">
<i class="ph-picture-in-picture ph-bold ph-lg"></i> {{ i18n.ts.openInWindow }}
<i class="ti ti-picture-in-picture"></i> {{ i18n.ts.openInWindow }}
</MkButton>
</div>
</template>

View file

@ -12,10 +12,10 @@ SPDX-License-Identifier: AGPL-3.0-only
@close="close(true)"
@closed="emit('closed')"
>
<template v-if="page === 1" #header><i class="ph-user-list ph-bold ph-lg"></i> {{ i18n.ts._initialAccountSetting.profileSetting }}</template>
<template v-if="page === 1" #header><i class="ti ti-user-edit"></i> {{ i18n.ts._initialAccountSetting.profileSetting }}</template>
<template v-else-if="page === 2" #header><i class="ti ti-lock"></i> {{ i18n.ts._initialAccountSetting.privacySetting }}</template>
<template v-else-if="page === 3" #header><i class="ph-user-plus ph-bold ph-lg"></i> {{ i18n.ts.follow }}</template>
<template v-else-if="page === 4" #header><i class="ph-bell-ringing ph-bold ph-lg"></i> {{ i18n.ts.pushNotification }}</template>
<template v-else-if="page === 3" #header><i class="ti ti-user-plus"></i> {{ i18n.ts.follow }}</template>
<template v-else-if="page === 4" #header><i class="ti ti-bell-plus"></i> {{ i18n.ts.pushNotification }}</template>
<template v-else-if="page === 5" #header>{{ i18n.ts.done }}</template>
<template v-else #header>{{ i18n.ts.initialAccountSetting }}</template>
@ -91,7 +91,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.centerPage">
<MkSpacer :marginMin="20" :marginMax="28">
<div class="_gaps" style="text-align: center;">
<i class="ph-bell-ringing ph-bold ph-lg" style="display: block; margin: auto; font-size: 3em; color: var(--accent);"></i>
<i class="ti ti-bell-ringing-2" style="display: block; margin: auto; font-size: 3em; color: var(--accent);"></i>
<div style="font-size: 120%;">{{ i18n.ts.pushNotification }}</div>
<div style="padding: 0 16px;">{{ i18n.tsx._initialAccountSetting.pushNotificationDescription({ name: instance.name ?? host }) }}</div>
<MkPushNotificationAllowButton primary showOnlyToRegister style="margin: 0 auto;"/>

View file

@ -10,7 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.visibility }}
</div>
<button key="public" :disabled="isSilenced || isReplyVisibilitySpecified" class="_button" :class="[$style.item, { [$style.active]: v === 'public' }]" data-index="1" @click="choose('public')">
<div :class="$style.icon"><i class="ph-globe-hemisphere-west ph-bold ph-lg"></i></div>
<div :class="$style.icon"><i class="ti ti-world"></i></div>
<div :class="$style.body">
<span :class="$style.itemTitle">{{ i18n.ts._visibility.public }}</span>
<span :class="$style.itemDescription">{{ i18n.ts._visibility.publicDescription }}</span>
@ -31,7 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</button>
<button key="specified" :disabled="localOnly" class="_button" :class="[$style.item, { [$style.active]: v === 'specified' }]" data-index="4" @click="choose('specified')">
<div :class="$style.icon"><i class="ph-envelope ph-bold ph-lg"></i></div>
<div :class="$style.icon"><i class="ti ti-mail"></i></div>
<div :class="$style.body">
<span :class="$style.itemTitle">{{ i18n.ts._visibility.specified }}</span>
<span :class="$style.itemDescription">{{ i18n.ts._visibility.specifiedDescription }}</span>

View file

@ -27,10 +27,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-if="!minimized">
<button v-for="button in buttonsRight" v-tooltip="button.title" class="_button" :class="[$style.headerButton, { [$style.highlighted]: button.highlighted }]" @click="button.onClick"><i :class="button.icon"></i></button>
</template>
<button v-if="canResize && minimized" v-tooltip="i18n.ts.windowRestore" class="_button" :class="$style.headerButton" @click="unMinimize()"><i class="ph-frame-corners ph-bold ph-lg"></i></button>
<button v-else-if="canResize && !maximized" v-tooltip="i18n.ts.windowMinimize" class="_button" :class="$style.headerButton" @click="minimize()"><i class="ph-arrows-in-simple ph-bold ph-lg"></i></button>
<button v-if="canResize && maximized" v-tooltip="i18n.ts.windowRestore" class="_button" :class="$style.headerButton" @click="unMaximize()"><i class="ph-picture-in-picture ph-bold ph-lg"></i></button>
<button v-else-if="canResize && !maximized && !minimized" v-tooltip="i18n.ts.windowMaximize" class="_button" :class="$style.headerButton" @click="maximize()"><i class="ph-frame-corners ph-bold ph-lg"></i></button>
<button v-if="canResize && minimized" v-tooltip="i18n.ts.windowRestore" class="_button" :class="$style.headerButton" @click="unMinimize()"><i class="ti ti-maximize"></i></button>
<button v-else-if="canResize && !maximized" v-tooltip="i18n.ts.windowMinimize" class="_button" :class="$style.headerButton" @click="minimize()"><i class="ti ti-minimize"></i></button>
<button v-if="canResize && maximized" v-tooltip="i18n.ts.windowRestore" class="_button" :class="$style.headerButton" @click="unMaximize()"><i class="ti ti-picture-in-picture"></i></button>
<button v-else-if="canResize && !maximized && !minimized" v-tooltip="i18n.ts.windowMaximize" class="_button" :class="$style.headerButton" @click="maximize()"><i class="ti ti-rectangle"></i></button>
<button v-if="closeButton" v-tooltip="i18n.ts.close" class="_button" :class="$style.headerButton" @click="close()"><i class="ti ti-x"></i></button>
</span>
</div>

View file

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<MkWindow :initialWidth="640" :initialHeight="402" :canResize="true" :closeButton="true">
<template #header>
<i class="icon ph-youtube-logo ph-bold ph-lg" style="margin-right: 0.5em;"></i>
<i class="icon ti ti-brand-youtube" style="margin-right: 0.5em;"></i>
<span>{{ title ?? 'YouTube' }}</span>
</template>

View file

@ -86,17 +86,17 @@ export const SomeTabs = {
{
key: 'princess',
title: 'Princess',
icon: 'ph-crown ph-bold ph-lg',
icon: 'ti ti-crown',
},
{
key: 'fairy',
title: 'Fairy',
icon: 'ph-snowflake ph-bold ph-lg',
icon: 'ti ti-snowflake',
},
{
key: 'angel',
title: 'Angel',
icon: 'ph-feather ph-bold ph-lg',
icon: 'ti ti-feather',
},
],
},

View file

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<!-- 動的ページのブロックの代替利用できないということを表示する -->
<template>
<div :class="$style.root">
<div :class="$style.heading"><i class="ph ph-dice-5 ph-bold ph-lg"></i> {{ i18n.ts._pages.blocks.dynamic }}</div>
<div :class="$style.heading"><i class="ti ti-dice-5"></i> {{ i18n.ts._pages.blocks.dynamic }}</div>
<I18n :src="i18n.ts._pages.blocks.dynamicDescription" tag="div" :class="$style.text">
<template #play>
<MkA to="/play" class="_link">Play</MkA>

View file

@ -40,7 +40,7 @@ export const navbarItemDef = reactive({
},
followRequests: {
title: i18n.ts.followRequests,
icon: 'ph-user-plus ph-bold ph-lg',
icon: 'ti ti-user-plus',
show: computed(() => $i != null && $i.isLocked),
indicated: computed(() => $i != null && $i.hasPendingReceivedFollowRequest),
to: '/my/follow-requests',
@ -52,7 +52,7 @@ export const navbarItemDef = reactive({
},
announcements: {
title: i18n.ts.announcements,
icon: 'ph-megaphone ph-bold ph-lg',
icon: 'ti ti-speakerphone',
indicated: computed(() => $i != null && $i.hasUnreadAnnouncement),
to: '/announcements',
},
@ -63,20 +63,20 @@ export const navbarItemDef = reactive({
},
lookup: {
title: i18n.ts.lookup,
icon: 'ph-binoculars ph-bold ph-lg',
icon: 'ti ti-world-search',
action: (ev) => {
lookup();
},
},
lists: {
title: i18n.ts.lists,
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
show: computed(() => $i != null),
to: '/my/lists',
},
antennas: {
title: i18n.ts.antennas,
icon: 'ph-flying-saucer ph-bold ph-lg',
icon: 'ti ti-antenna',
show: computed(() => $i != null),
to: '/my/antennas',
},
@ -88,7 +88,7 @@ export const navbarItemDef = reactive({
},
pages: {
title: i18n.ts.pages,
icon: 'ph-newspaper ph-bold ph-lg',
icon: 'ti ti-news',
to: '/pages',
},
play: {
@ -103,7 +103,7 @@ export const navbarItemDef = reactive({
},
clips: {
title: i18n.ts.clip,
icon: 'ph-paperclip ph-bold ph-lg',
icon: 'ti ti-paperclip',
show: computed(() => $i != null),
to: '/my/clips',
},
@ -114,18 +114,18 @@ export const navbarItemDef = reactive({
},
achievements: {
title: i18n.ts.achievements,
icon: 'ph-trophy ph-bold ph-lg',
icon: 'ti ti-medal',
show: computed(() => $i != null && instance.enableAchievements),
to: '/my/achievements',
},
games: {
title: 'Games',
icon: 'ph-game-controller ph-bold ph-lg',
icon: 'ti ti-device-gamepad',
to: '/games',
},
ui: {
title: i18n.ts.switchUi,
icon: 'ph-devices ph-bold ph-lg',
icon: 'ti ti-devices',
action: (ev) => {
os.popupMenu([{
text: i18n.ts.default,
@ -167,7 +167,7 @@ export const navbarItemDef = reactive({
},
profile: {
title: i18n.ts.profile,
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
show: computed(() => $i != null),
to: `/@${$i?.username}`,
},

View file

@ -58,13 +58,13 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkKeyValue>
</FormSplit>
<FormLink v-if="instance.impressumUrl" :to="instance.impressumUrl" external>
<template #icon><i class="ph-newspaper-clipping ph-bold ph-lg"></i></template>
<template #icon><i class="ti ti-user-shield"></i></template>
{{ i18n.ts.impressum }}
</FormLink>
<div class="_gaps_s">
<MkFolder v-if="instance.serverRules.length > 0">
<template #label>
<i class="ph-list-checks ph-bold ph-lg"></i>
<i class="ti ti-checkup-list"></i>
{{ i18n.ts.serverRules }}
</template>
@ -73,7 +73,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</ol>
</MkFolder>
<FormLink v-if="instance.tosUrl" :to="instance.tosUrl" external>
<template #icon><i class="ph-notebook ph-bold ph-lg"></i></template>
<template #icon><i class="ti ti-license"></i></template>
{{ i18n.ts.termsOfService }}
</FormLink>
<FormLink v-if="instance.privacyPolicyUrl" :to="instance.privacyPolicyUrl" external>
@ -81,7 +81,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.privacyPolicy }}
</FormLink>
<FormLink v-if="instance.feedbackUrl" :to="instance.feedbackUrl" external>
<template #icon><i class="ph-envelope ph-bold ph-lg"></i></template>
<template #icon><i class="ti ti-message"></i></template>
{{ i18n.ts.feedback }}
</FormLink>
</div>

View file

@ -50,7 +50,7 @@ onDeactivated(() => {
definePageMetadata(() => ({
title: i18n.ts.achievements,
icon: 'ph-trophy ph-bold ph-lg',
icon: 'ti ti-medal',
}));
</script>

View file

@ -133,7 +133,7 @@ const headerTabs = computed(() => [{
}, iAmModerator ? {
key: 'ip',
title: 'IP',
icon: 'ph-password ph-bold ph-lg',
icon: 'ti ti-password',
} : null, {
key: 'raw',
title: 'Raw data',

View file

@ -97,7 +97,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder>
<MkFolder>
<template #icon><i class="ph-password ph-bold ph-lg"></i></template>
<template #icon><i class="ti ti-password"></i></template>
<template #label>IP</template>
<MkInfo v-if="!iAmAdmin" warn>{{ i18n.ts.requireAdminForView }}</MkInfo>
<MkInfo v-else>The date is the IP address was first acknowledged.</MkInfo>
@ -110,7 +110,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder>
<div>
<MkButton v-if="iAmModerator" inline danger style="margin-right: 8px;" @click="unsetUserAvatar"><i class="ph-user-circle ph-bold ph-lg"></i> {{ i18n.ts.unsetUserAvatar }}</MkButton>
<MkButton v-if="iAmModerator" inline danger style="margin-right: 8px;" @click="unsetUserAvatar"><i class="ti ti-user-circle"></i> {{ i18n.ts.unsetUserAvatar }}</MkButton>
<MkButton v-if="iAmModerator" inline danger style="margin-right: 8px;" @click="unsetUserBanner"><i class="ti ti-photo"></i> {{ i18n.ts.unsetUserBanner }}</MkButton>
<MkButton v-if="iAmModerator" inline danger @click="deleteAllFiles"><i class="ph-cloud ph-bold ph-lg"></i> {{ i18n.ts.deleteAllFiles }}</MkButton>
</div>
@ -127,7 +127,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkRolePreview :class="$style.role" :role="role" :forModeration="true"/>
<button class="_button" @click="toggleRoleItem(role)"><i class="ti ti-chevron-down"></i></button>
<button v-if="role.target === 'manual'" class="_button" :class="$style.roleUnassign" @click="unassignRole(role, $event)"><i class="ti ti-x"></i></button>
<button v-else class="_button" :class="$style.roleUnassign" disabled><i class="ph-prohibit ph-bold ph-lg"></i></button>
<button v-else class="_button" :class="$style.roleUnassign" disabled><i class="ti ti-ban"></i></button>
</div>
<div v-if="expandedRoles.includes(role.id)" :class="$style.roleItemSub">
<div>Assigned: <MkTime :time="info.roleAssigns.find(a => a.roleId === role.id).createdAt" mode="detail"/></div>
@ -517,11 +517,11 @@ const headerTabs = computed(() => [{
}, {
key: 'roles',
title: i18n.ts.roles,
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badges',
}, {
key: 'announcements',
title: i18n.ts.announcements,
icon: 'ph-megaphone ph-bold ph-lg',
icon: 'ti ti-speakerphone',
}, {
key: 'drive',
title: i18n.ts.drive,

View file

@ -28,7 +28,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<option value="not">{{ i18n.ts._role._condition.not }}</option>
</MkSelect>
<button v-if="draggable" class="drag-handle _button" :class="$style.dragHandle">
<i class="ph-list ph-bold ph-lg-2"></i>
<i class="ti ti-menu-2"></i>
</button>
<button v-if="draggable" class="_button" :class="$style.remove" @click="removeSelf">
<i class="ti ti-x"></i>

View file

@ -257,7 +257,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.ads,
icon: 'ph-flag ph-bold ph-lg',
icon: 'ti ti-ad',
}));
</script>

View file

@ -159,6 +159,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.announcements,
icon: 'ph-megaphone ph-bold ph-lg',
icon: 'ti ti-speakerphone',
}));
</script>

View file

@ -200,7 +200,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.branding,
icon: 'ph-paint-roller ph-bold ph-lg',
icon: 'ti ti-paint',
}));
</script>

View file

@ -35,6 +35,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.database,
icon: 'ph-database ph-bold ph-lg',
icon: 'ti ti-database',
}));
</script>

View file

@ -132,7 +132,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.emailServer,
icon: 'ph-envelope ph-bold ph-lg',
icon: 'ti ti-mail',
}));
</script>

View file

@ -100,7 +100,7 @@ const menuDef = computed(() => [{
action: adminLookup,
}, ...(instance.disableRegistration ? [{
type: 'button',
icon: 'ph-user-plus ph-bold ph-lg',
icon: 'ti ti-user-plus',
text: i18n.ts.createInviteCode,
action: invite,
}] : [])],
@ -117,7 +117,7 @@ const menuDef = computed(() => [{
to: '/admin/users',
active: currentPage.value?.route.name === 'users',
}, {
icon: 'ph-user-plus ph-bold ph-lg',
icon: 'ti ti-user-plus',
text: i18n.ts.invite,
to: '/admin/invites',
active: currentPage.value?.route.name === 'invites',
@ -127,7 +127,7 @@ const menuDef = computed(() => [{
to: '/admin/approvals',
active: currentPage.value?.route.name === 'approvals',
}, {
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badges',
text: i18n.ts.roles,
to: '/admin/roles',
active: currentPage.value?.route.name === 'roles',
@ -157,12 +157,12 @@ const menuDef = computed(() => [{
to: '/admin/files',
active: currentPage.value?.route.name === 'files',
}, {
icon: 'ph-megaphone ph-bold ph-lg',
icon: 'ti ti-speakerphone',
text: i18n.ts.announcements,
to: '/admin/announcements',
active: currentPage.value?.route.name === 'announcements',
}, {
icon: 'ph-flag ph-bold ph-lg',
icon: 'ti ti-ad',
text: i18n.ts.ads,
to: '/admin/ads',
active: currentPage.value?.route.name === 'ads',
@ -185,7 +185,7 @@ const menuDef = computed(() => [{
to: '/admin/settings',
active: currentPage.value?.route.name === 'settings',
}, {
icon: 'ph-paint-roller ph-bold ph-lg',
icon: 'ti ti-paint',
text: i18n.ts.branding,
to: '/admin/branding',
active: currentPage.value?.route.name === 'branding',
@ -195,7 +195,7 @@ const menuDef = computed(() => [{
to: '/admin/moderation',
active: currentPage.value?.route.name === 'moderation',
}, {
icon: 'ph-envelope ph-bold ph-lg',
icon: 'ti ti-mail',
text: i18n.ts.emailServer,
to: '/admin/email-settings',
active: currentPage.value?.route.name === 'email-settings',
@ -215,7 +215,7 @@ const menuDef = computed(() => [{
to: '/admin/relays',
active: currentPage.value?.route.name === 'relays',
}, {
icon: 'ph-prohibit ph-bold ph-lg',
icon: 'ti ti-ban',
text: i18n.ts.instanceBlocking,
to: '/admin/instance-block',
active: currentPage.value?.route.name === 'instance-block',
@ -238,7 +238,7 @@ const menuDef = computed(() => [{
}, {
title: i18n.ts.info,
items: [{
icon: 'ph-database ph-bold ph-lg',
icon: 'ti ti-database',
text: i18n.ts.database,
to: '/admin/database',
active: currentPage.value?.route.name === 'database',
@ -305,13 +305,13 @@ function invite() {
function adminLookup(ev: MouseEvent) {
os.popupMenu([{
text: i18n.ts.user,
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
action: () => {
lookupUser();
},
}, {
text: `${i18n.ts.user} (${i18n.ts.email})`,
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
action: () => {
lookupUserByEmail();
},

View file

@ -59,7 +59,7 @@ const headerActions = computed(() => []);
const headerTabs = computed(() => [{
key: 'block',
title: i18n.ts.block,
icon: 'ph-prohibit ph-bold ph-lg',
icon: 'ti ti-ban',
}, {
key: 'silence',
title: i18n.ts.silence,
@ -68,6 +68,6 @@ const headerTabs = computed(() => [{
definePageMetadata(() => ({
title: i18n.ts.instanceBlocking,
icon: 'ph-prohibit ph-bold ph-lg',
icon: 'ti ti-ban',
}));
</script>

View file

@ -115,7 +115,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.invite,
icon: 'ph-user-plus ph-bold ph-lg',
icon: 'ti ti-user-plus',
}));
</script>

View file

@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div>{{ relay.inbox }}</div>
<div style="margin: 8px 0;">
<i v-if="relay.status === 'accepted'" class="ti ti-check" :class="$style.icon" style="color: var(--success);"></i>
<i v-else-if="relay.status === 'rejected'" class="ph-prohibit ph-bold ph-lg" :class="$style.icon" style="color: var(--error);"></i>
<i v-else-if="relay.status === 'rejected'" class="ti ti-ban" :class="$style.icon" style="color: var(--error);"></i>
<i v-else class="ti ti-clock" :class="$style.icon"></i>
<span>{{ i18n.ts._relayStatus[relay.status] }}</span>
</div>

View file

@ -89,7 +89,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: role.value ? `${i18n.ts._role.edit}: ${role.value.name}` : i18n.ts._role.new,
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badge',
}));
</script>

View file

@ -172,7 +172,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: `${i18n.ts.role}: ${role.name}`,
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badge',
}));
</script>

View file

@ -299,7 +299,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.roles,
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badges',
}));
</script>

View file

@ -23,7 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.item">
<div :class="$style.itemHeader">
<div :class="$style.itemNumber" v-text="String(index + 1)"/>
<span :class="$style.itemHandle"><i class="ph-list ph-bold ph-lg"/></span>
<span :class="$style.itemHandle"><i class="ti ti-menu"/></span>
<button class="_button" :class="$style.itemRemove" @click="remove(index)"><i class="ti ti-x"></i></button>
</div>
<MkInput v-model="serverRules[index]"/>

View file

@ -29,7 +29,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkInput>
<MkInput v-model="maintainerEmail" type="email">
<template #prefix><i class="ph-envelope ph-bold ph-lg"></i></template>
<template #prefix><i class="ti ti-mail"></i></template>
<template #label>{{ i18n.ts.maintainerEmail }}</template>
</MkInput>
</FormSplit>

View file

@ -22,7 +22,7 @@ import { instance } from '@/instance.js';
definePageMetadata(() => ({
title: i18n.ts.ads,
icon: 'ph-flag ph-bold ph-lg',
icon: 'ti ti-ad',
}));
</script>

View file

@ -104,7 +104,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: announcement.value ? `${i18n.ts.announcements}: ${announcement.value.title}` : i18n.ts.announcements,
icon: 'ph-megaphone ph-bold ph-lg',
icon: 'ti ti-speakerphone',
}));
</script>

View file

@ -113,7 +113,7 @@ const headerTabs = computed(() => [{
definePageMetadata(() => ({
title: i18n.ts.announcements,
icon: 'ph-megaphone ph-bold ph-lg',
icon: 'ti ti-speakerphone',
}));
</script>

View file

@ -93,7 +93,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: antenna.value ? antenna.value.name : i18n.ts.antennas,
icon: 'ph-flying-saucer ph-bold ph-lg',
icon: 'ti ti-antenna',
}));
</script>

View file

@ -50,7 +50,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template #item="{element,index}">
<div :class="$style.pinnedNote">
<button class="_button" :class="$style.pinnedNoteHandle"><i class="ph-list ph-bold ph-lg"></i></button>
<button class="_button" :class="$style.pinnedNoteHandle"><i class="ti ti-menu"></i></button>
{{ element.id }}
<button class="_button" :class="$style.pinnedNoteRemove" @click="removePinnedNote(index)"><i class="ti ti-x"></i></button>
</div>

View file

@ -285,7 +285,7 @@ const headerTabs = computed(() => [{
}, {
key: 'featured',
title: i18n.ts.featured,
icon: 'ph-lightning ph-bold ph-lg',
icon: 'ti ti-bolt',
}, {
key: 'search',
title: i18n.ts.search,

View file

@ -164,7 +164,7 @@ const headerActions = computed(() => clip.value && isOwned.value ? [{
definePageMetadata(() => ({
title: clip.value ? clip.value.name : i18n.ts.clip,
icon: 'ph-paperclip ph-bold ph-lg',
icon: 'ti ti-paperclip',
}));
</script>

View file

@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<i class="ti ti-pencil"></i>
</button>
<button v-if="isImage" v-tooltip="i18n.ts.cropImage" class="_button" :class="$style.fileQuickActionsOthersButton" @click="crop()">
<i class="ph-crop ph-bold ph-lg"></i>
<i class="ti ti-crop"></i>
</button>
<button v-if="file.isSensitive" v-tooltip="i18n.ts.unmarkAsSensitive" class="_button" :class="$style.fileQuickActionsOthersButton" @click="toggleSensitive()">
<i class="ti ti-eye"></i>

View file

@ -123,7 +123,7 @@ function onGameEnd() {
definePageMetadata(() => ({
title: i18n.ts.bubbleGame,
icon: 'ph-game-controller ph-bold ph-lg',
icon: 'ti ti-device-gamepad',
}));
</script>

View file

@ -59,7 +59,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-for="role in rolesThatCanBeUsedThisEmojiAsReaction" :key="role.id" :class="$style.roleItem">
<MkRolePreview :class="$style.role" :role="role" :forModeration="true" :detailed="false" style="pointer-events: none;"/>
<button v-if="role.target === 'manual'" class="_button" :class="$style.roleUnassign" @click="removeRole(role, $event)"><i class="ti ti-x"></i></button>
<button v-else class="_button" :class="$style.roleUnassign" disabled><i class="ph-prohibit ph-bold ph-lg"></i></button>
<button v-else class="_button" :class="$style.roleUnassign" disabled><i class="ti ti-ban"></i></button>
</div>
<MkInfo>{{ i18n.ts.rolesThatCanBeUsedThisEmojiAsReactionEmptyDescription }}</MkInfo>

View file

@ -48,7 +48,7 @@ const headerActions = computed(() => []);
const headerTabs = computed(() => [{
key: 'featured',
icon: 'ph-lightning ph-bold ph-lg',
icon: 'ti ti-bolt',
title: i18n.ts.featured,
}, {
key: 'users',
@ -56,7 +56,7 @@ const headerTabs = computed(() => [{
title: i18n.ts.users,
}, {
key: 'roles',
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badges',
title: i18n.ts.roles,
}]);

View file

@ -71,7 +71,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.followRequests,
icon: 'ph-user-plus ph-bold ph-lg',
icon: 'ti ti-user-plus',
}));
</script>

View file

@ -29,6 +29,6 @@ import { definePageMetadata } from '@/scripts/page-metadata.js';
definePageMetadata(() => ({
title: 'Misskey Games',
icon: 'ph-game-controller ph-bold ph-lg',
icon: 'ti ti-device-gamepad',
}));
</script>

View file

@ -10,8 +10,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkLoading v-if="uiPhase === 'fetching'"/>
<div v-else-if="uiPhase === 'confirm' && data" class="_gaps_m" :class="$style.extInstallerRoot">
<div :class="$style.extInstallerIconWrapper">
<i v-if="data.type === 'plugin'" class="ph-plug ph-bold ph-lg"></i>
<i v-else-if="data.type === 'theme'" class="ph-palette ph-bold ph-lg"></i>
<i v-if="data.type === 'plugin'" class="ti ti-plug"></i>
<i v-else-if="data.type === 'theme'" class="ti ti-palette"></i>
<i v-else class="ti ti-download"></i>
</div>
<h2 :class="$style.extInstallerTitle">{{ i18n.ts._externalResourceInstaller[`_${data.type}`].title }}</h2>

View file

@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSpacer v-else :contentMax="800">
<div class="_gaps_m" style="text-align: center;">
<div v-if="resetCycle && inviteLimit">{{ i18n.tsx.inviteLimitResetCycle({ time: resetCycle, limit: inviteLimit }) }}</div>
<MkButton inline primary rounded :disabled="currentInviteLimit !== null && currentInviteLimit <= 0" @click="create"><i class="ph-user-plus ph-bold ph-lg"></i> {{ i18n.ts.createInviteCode }}</MkButton>
<MkButton inline primary rounded :disabled="currentInviteLimit !== null && currentInviteLimit <= 0" @click="create"><i class="ti ti-user-plus"></i> {{ i18n.ts.createInviteCode }}</MkButton>
<div v-if="currentInviteLimit !== null">{{ i18n.tsx.createLimitRemaining({ limit: currentInviteLimit }) }}</div>
<MkPagination ref="pagingComponent" :pagination="pagination">
@ -95,7 +95,7 @@ update();
definePageMetadata(() => ({
title: i18n.ts.invite,
icon: 'ph-user-plus ph-bold ph-lg',
icon: 'ti ti-user-plus',
}));
</script>

View file

@ -103,7 +103,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: list.value ? list.value.name : i18n.ts.lists,
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
}));
</script>
<style lang="scss" module>

View file

@ -41,6 +41,6 @@ function onAntennaCreated() {
definePageMetadata(() => ({
title: i18n.ts.manageAntennas,
icon: 'ph-flying-saucer ph-bold ph-lg',
icon: 'ti ti-antenna',
}));
</script>

View file

@ -38,6 +38,6 @@ misskeyApi('antennas/show', { antennaId: props.antennaId }).then((antennaRespons
definePageMetadata(() => ({
title: i18n.ts.manageAntennas,
icon: 'ph-flying-saucer ph-bold ph-lg',
icon: 'ti ti-antenna',
}));
</script>

View file

@ -57,7 +57,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.manageAntennas,
icon: 'ph-flying-saucer ph-bold ph-lg',
icon: 'ti ti-antenna',
}));
onActivated(() => {

View file

@ -93,7 +93,7 @@ const headerActions = computed(() => []);
const headerTabs = computed(() => [{
key: 'my',
title: i18n.ts.myClips,
icon: 'ph-paperclip ph-bold ph-lg',
icon: 'ti ti-paperclip',
}, {
key: 'favorites',
title: i18n.ts.favorites,
@ -102,7 +102,7 @@ const headerTabs = computed(() => [{
definePageMetadata(() => ({
title: i18n.ts.clip,
icon: 'ph-paperclip ph-bold ph-lg',
icon: 'ti ti-paperclip',
}));
</script>

View file

@ -73,7 +73,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.manageLists,
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
}));
onActivated(() => {

View file

@ -135,7 +135,7 @@ async function removeUser(item, ev) {
async function showMembershipMenu(item, ev) {
os.popupMenu([{
text: item.withReplies ? i18n.ts.hideRepliesToOthersInTimeline : i18n.ts.showRepliesToOthersInTimeline,
icon: item.withReplies ? 'ph-envelope-open ph-bold ph-lg' : 'ph-envelope ph-bold ph-lg',
icon: item.withReplies ? 'ph-envelope-open ph-bold ph-lg' : 'ti ti-messages',
action: async () => {
misskeyApi('users/lists/update-membership', {
listId: list.value.id,
@ -188,7 +188,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: list.value ? list.value.name : i18n.ts.lists,
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
}));
</script>

View file

@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="_margin">
<div v-if="!showNext" class="_buttons" :class="$style.loadNext">
<MkButton v-if="note.channelId" rounded :class="$style.loadButton" @click="showNext = 'channel'"><i class="ti ti-chevron-up"></i> <i class="ph-television-simple ph-bold ph-lg"></i></MkButton>
<MkButton rounded :class="$style.loadButton" @click="showNext = 'user'"><i class="ti ti-chevron-up"></i> <i class="ph-user ph-bold ph-lg"></i></MkButton>
<MkButton rounded :class="$style.loadButton" @click="showNext = 'user'"><i class="ti ti-chevron-up"></i> <i class="ti ti-user"></i></MkButton>
</div>
<div v-if="defaultStore.state.noteDesign === 'misskey'" class="_margin _gaps_s">
<MkRemoteCaution v-if="note.user.host != null" :href="note.url ?? note.uri"/>
@ -35,7 +35,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<div v-if="!showPrev" class="_buttons" :class="$style.loadPrev">
<MkButton v-if="note.channelId" rounded :class="$style.loadButton" @click="showPrev = 'channel'"><i class="ti ti-chevron-down"></i> <i class="ph-television-simple ph-bold ph-lg"></i></MkButton>
<MkButton rounded :class="$style.loadButton" @click="showPrev = 'user'"><i class="ti ti-chevron-down"></i> <i class="ph-user ph-bold ph-lg"></i></MkButton>
<MkButton rounded :class="$style.loadButton" @click="showPrev = 'user'"><i class="ti ti-chevron-down"></i> <i class="ti ti-user"></i></MkButton>
</div>
</div>

View file

@ -87,11 +87,11 @@ const headerTabs = computed(() => [{
}, {
key: 'mentions',
title: i18n.ts.mentions,
icon: 'ph-at ph-bold ph-lg',
icon: 'ti ti-at',
}, {
key: 'directNotes',
title: i18n.ts.directNotes,
icon: 'ph-envelope ph-bold ph-lg',
icon: 'ti ti-mail',
}]);
definePageMetadata(() => ({

View file

@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<i class="ti ti-trash"></i>
</button>
<button v-if="draggable" class="drag-handle _button">
<i class="ph-list ph-bold ph-lg-2"></i>
<i class="ti ti-menu-2"></i>
</button>
<button class="_button" @click="toggleContent(!showBody)">
<template v-if="showBody"><i class="ti ti-chevron-up"></i></template>

View file

@ -115,6 +115,6 @@ onUnmounted(() => {
definePageMetadata(() => ({
title: 'Reversi',
icon: 'ph-game-controller ph-bold ph-lg',
icon: 'ti ti-device-gamepad',
}));
</script>

View file

@ -36,13 +36,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.gamePreviews">
<MkA v-for="g in items" :key="g.id" v-panel :class="[$style.gamePreview, !g.isStarted && !g.isEnded && $style.gamePreviewWaiting, g.isStarted && !g.isEnded && $style.gamePreviewActive]" tabindex="-1" :to="`/reversi/g/${g.id}`">
<div :class="$style.gamePreviewPlayers">
<span v-if="g.winnerId === g.user1Id" style="margin-right: 0.75em; color: var(--accent); font-weight: bold;"><i class="ph-trophy ph-bold ph-lg"></i></span>
<span v-if="g.winnerId === g.user1Id" style="margin-right: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
<span v-if="g.winnerId === g.user2Id" style="margin-right: 0.75em; visibility: hidden;"><i class="ti ti-x"></i></span>
<MkAvatar :class="$style.gamePreviewPlayersAvatar" :user="g.user1"/>
<span style="margin: 0 1em;">vs</span>
<MkAvatar :class="$style.gamePreviewPlayersAvatar" :user="g.user2"/>
<span v-if="g.winnerId === g.user1Id" style="margin-left: 0.75em; visibility: hidden;"><i class="ti ti-x"></i></span>
<span v-if="g.winnerId === g.user2Id" style="margin-left: 0.75em; color: var(--accent); font-weight: bold;"><i class="ph-trophy ph-bold ph-lg"></i></span>
<span v-if="g.winnerId === g.user2Id" style="margin-left: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
</div>
<div :class="$style.gamePreviewFooter">
<span v-if="g.isStarted && !g.isEnded" :class="$style.gamePreviewStatusActive">{{ i18n.ts._reversi.playing }}</span>
@ -63,13 +63,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.gamePreviews">
<MkA v-for="g in items" :key="g.id" v-panel :class="[$style.gamePreview, !g.isStarted && !g.isEnded && $style.gamePreviewWaiting, g.isStarted && !g.isEnded && $style.gamePreviewActive]" tabindex="-1" :to="`/reversi/g/${g.id}`">
<div :class="$style.gamePreviewPlayers">
<span v-if="g.winnerId === g.user1Id" style="margin-right: 0.75em; color: var(--accent); font-weight: bold;"><i class="ph-trophy ph-bold ph-lg"></i></span>
<span v-if="g.winnerId === g.user1Id" style="margin-right: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
<span v-if="g.winnerId === g.user2Id" style="margin-right: 0.75em; visibility: hidden;"><i class="ti ti-x"></i></span>
<MkAvatar :class="$style.gamePreviewPlayersAvatar" :user="g.user1"/>
<span style="margin: 0 1em;">vs</span>
<MkAvatar :class="$style.gamePreviewPlayersAvatar" :user="g.user2"/>
<span v-if="g.winnerId === g.user1Id" style="margin-left: 0.75em; visibility: hidden;"><i class="ti ti-x"></i></span>
<span v-if="g.winnerId === g.user2Id" style="margin-left: 0.75em; color: var(--accent); font-weight: bold;"><i class="ph-trophy ph-bold ph-lg"></i></span>
<span v-if="g.winnerId === g.user2Id" style="margin-left: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
</div>
<div :class="$style.gamePreviewFooter">
<span v-if="g.isStarted && !g.isEnded" :class="$style.gamePreviewStatusActive">{{ i18n.ts._reversi.playing }}</span>
@ -263,7 +263,7 @@ onUnmounted(() => {
definePageMetadata(() => ({
title: 'Reversi',
icon: 'ph-game-controller ph-bold ph-lg',
icon: 'ti ti-device-gamepad',
}));
</script>

View file

@ -95,7 +95,7 @@ const headerTabs = computed(() => [{
definePageMetadata(() => ({
title: role.value ? role.value.name : i18n.ts.role,
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badge',
}));
</script>

View file

@ -77,7 +77,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.installedApps,
icon: 'ph-plug ph-bold ph-lg',
icon: 'ti ti-plug',
}));
</script>

View file

@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<FormSection first>
<template #label>{{ i18n.ts.emailAddress }}</template>
<MkInput v-model="emailAddress" type="email" manualSave>
<template #prefix><i class="ph-envelope ph-bold ph-lg"></i></template>
<template #prefix><i class="ti ti-mail"></i></template>
<template v-if="$i.email && !$i.emailVerified" #caption>{{ i18n.ts.verificationEmailSent }}</template>
<template v-else-if="emailAddress === $i.email && $i.emailVerified" #caption><i class="ti ti-check" style="color: var(--success);"></i> {{ i18n.ts.emailVerified }}</template>
</MkInput>
@ -115,6 +115,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.email,
icon: 'ph-envelope ph-bold ph-lg',
icon: 'ti ti-mail',
}));
</script>

View file

@ -116,7 +116,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</FormSection>
<FormSection>
<template #label><i class="ph-flying-saucer ph-bold ph-lg"></i> {{ i18n.ts.antennas }}</template>
<template #label><i class="ti ti-antenna"></i> {{ i18n.ts.antennas }}</template>
<div class="_gaps_s">
<MkFolder>
<template #label>{{ i18n.ts.export }}</template>

View file

@ -62,7 +62,7 @@ const ro = new ResizeObserver((entries, observer) => {
const menuDef = computed(() => [{
title: i18n.ts.basicSettings,
items: [{
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
text: i18n.ts.profile,
to: '/settings/profile',
active: currentPage.value?.route.name === 'profile',
@ -87,7 +87,7 @@ const menuDef = computed(() => [{
to: '/settings/notifications',
active: currentPage.value?.route.name === 'notifications',
}, {
icon: 'ph-envelope ph-bold ph-lg',
icon: 'ti ti-mail',
text: i18n.ts.email,
to: '/settings/email',
active: currentPage.value?.route.name === 'email',
@ -105,12 +105,12 @@ const menuDef = computed(() => [{
to: '/settings/general',
active: currentPage.value?.route.name === 'general',
}, {
icon: 'ph-palette ph-bold ph-lg',
icon: 'ti ti-palette',
text: i18n.ts.theme,
to: '/settings/theme',
active: currentPage.value?.route.name === 'theme',
}, {
icon: 'ph-list ph-bold ph-lg-2',
icon: 'ti ti-menu-2',
text: i18n.ts.navbar,
to: '/settings/navbar',
active: currentPage.value?.route.name === 'navbar',
@ -125,7 +125,7 @@ const menuDef = computed(() => [{
to: '/settings/sounds',
active: currentPage.value?.route.name === 'sounds',
}, {
icon: 'ph-plug ph-bold ph-lg',
icon: 'ti ti-plug',
text: i18n.ts.plugins,
to: '/settings/plugin',
active: currentPage.value?.route.name === 'plugin',
@ -133,12 +133,12 @@ const menuDef = computed(() => [{
}, {
title: i18n.ts.otherSettings,
items: [{
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badges',
text: i18n.ts.roles,
to: '/settings/roles',
active: currentPage.value?.route.name === 'roles',
}, {
icon: 'ph-prohibit ph-bold ph-lg',
icon: 'ti ti-ban',
text: i18n.ts.muteAndBlock,
to: '/settings/mute-block',
active: currentPage.value?.route.name === 'mute-block',

View file

@ -91,7 +91,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder>
<MkFolder>
<template #icon><i class="ph-prohibit ph-bold ph-lg"></i></template>
<template #icon><i class="ti ti-ban"></i></template>
<template #label>{{ i18n.ts.blockedUsers }}</template>
<MkPagination :pagination="blockingPagination">
@ -231,7 +231,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.muteAndBlock,
icon: 'ph-prohibit ph-bold ph-lg',
icon: 'ti ti-ban',
}));
</script>

View file

@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only
v-if="element.type === '-' || navbarItemDef[element.type]"
:class="$style.item"
>
<button class="_button" :class="$style.itemHandle"><i class="ph-list ph-bold ph-lg"></i></button>
<button class="_button" :class="$style.itemHandle"><i class="ti ti-menu"></i></button>
<i class="ti-fw" :class="[$style.itemIcon, navbarItemDef[element.type]?.icon]"></i><span :class="$style.itemText">{{ navbarItemDef[element.type]?.title ?? i18n.ts.divider }}</span>
<button class="_button" :class="$style.itemRemove" @click="removeItem(index)"><i class="ti ti-x"></i></button>
</div>
@ -120,7 +120,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.navbar,
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
}));
</script>

View file

@ -141,6 +141,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.plugins,
icon: 'ph-plug ph-bold ph-lg',
icon: 'ti ti-plug',
}));
</script>

View file

@ -50,7 +50,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<FormSlot>
<MkFolder>
<template #icon><i class="ph-list ph-bold ph-lg"></i></template>
<template #icon><i class="ti ti-list"></i></template>
<template #label>{{ i18n.ts._profile.metadataEdit }}</template>
<div :class="$style.metadataRoot">
@ -72,7 +72,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template #item="{element, index}">
<div :class="$style.fieldDragItem">
<button v-if="!fieldEditMode" class="_button" :class="$style.dragItemHandle" tabindex="-1"><i class="ph-list ph-bold ph-lg"></i></button>
<button v-if="!fieldEditMode" class="_button" :class="$style.dragItemHandle" tabindex="-1"><i class="ti ti-menu"></i></button>
<button v-if="fieldEditMode" :disabled="fields.length <= 1" class="_button" :class="$style.dragItemRemove" @click="deleteField(index)"><i class="ti ti-x"></i></button>
<div :class="$style.dragItemForm">
<FormSplit :minWidth="200">
@ -396,7 +396,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.profile,
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
}));
</script>

View file

@ -39,7 +39,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.roles,
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badges',
}));
</script>

View file

@ -52,6 +52,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.statusbar,
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
}));
</script>

View file

@ -59,9 +59,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<FormSection>
<div class="_formLinksGrid">
<FormLink to="/settings/theme/manage"><template #icon><i class="ph-wrench ph-bold ph-lg"></i></template>{{ i18n.ts._theme.manage }}<template #suffix>{{ themesCount }}</template></FormLink>
<FormLink to="https://assets.misskey.io/theme/list" external><template #icon><i class="ph-globe-hemisphere-west ph-bold ph-lg"></i></template>{{ i18n.ts._theme.explore }}</FormLink>
<FormLink to="https://assets.misskey.io/theme/list" external><template #icon><i class="ti ti-world"></i></template>{{ i18n.ts._theme.explore }}</FormLink>
<FormLink to="/settings/theme/install"><template #icon><i class="ti ti-download"></i></template>{{ i18n.ts._theme.install }}</FormLink>
<FormLink to="/theme-editor"><template #icon><i class="ph-paint-roller ph-bold ph-lg"></i></template>{{ i18n.ts._theme.make }}</FormLink>
<FormLink to="/theme-editor"><template #icon><i class="ti ti-paint"></i></template>{{ i18n.ts._theme.make }}</FormLink>
</div>
</FormSection>
@ -179,7 +179,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.theme,
icon: 'ph-palette ph-bold ph-lg',
icon: 'ti ti-palette',
}));
</script>

View file

@ -221,7 +221,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.themeEditor,
icon: 'ph-palette ph-bold ph-lg',
icon: 'ti ti-palette',
}));
</script>

View file

@ -316,12 +316,12 @@ const headerTabs = computed(() => [...(defaultStore.reactiveState.pinnedUserList
icon: 'ph-globe-hemisphere-west ph-bold ph-lg',
iconOnly: true,
}] : []), {
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
title: i18n.ts.lists,
iconOnly: true,
onClick: chooseList,
}, {
icon: 'ph-flying-saucer ph-bold ph-lg',
icon: 'ti ti-antenna',
title: i18n.ts.antennas,
iconOnly: true,
onClick: chooseAntenna,
@ -349,7 +349,7 @@ const headerTabsWhenNotLogin = computed(() => [
definePageMetadata(() => ({
title: i18n.ts.timeline,
icon: src.value === 'local' ? 'ti ti-planet' : src.value === 'social' ? 'ph-rocket-launch ph-bold ph-lg' : src.value === 'global' ? 'ph-globe-hemisphere-west ph-bold ph-lg' : src.value === 'bubble' ? 'ph-drop ph-bold ph-lg' : 'ti ti-home',
icon: src.value === 'local' ? 'ti ti-planet' : src.value === 'social' ? 'ph-rocket-launch ph-bold ph-lg' : src.value === 'global' ? 'ti ti-world' : src.value === 'bubble' ? 'ph-drop ph-bold ph-lg' : 'ti ti-home',
}));
</script>

View file

@ -107,7 +107,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: list.value ? list.value.name : i18n.ts.lists,
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
}));
</script>

View file

@ -54,7 +54,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.user,
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
...user.value ? {
title: user.value.name ? `${user.value.name} (@${user.value.username})` : `@${user.value.username}`,
subtitle: i18n.ts.followers,

View file

@ -54,7 +54,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.user,
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
...user.value ? {
title: user.value.name ? `${user.value.name} (@${user.value.username})` : `@${user.value.username}`,
subtitle: i18n.ts.following,

View file

@ -95,7 +95,7 @@ const headerTabs = computed(() => user.value ? [{
}, ...(user.value.host == null ? [{
key: 'achievements',
title: i18n.ts.achievements,
icon: 'ph-trophy ph-bold ph-lg',
icon: 'ti ti-medal',
}] : []), ...($i && ($i.id === user.value.id || $i.isAdmin || $i.isModerator)) || user.value.publicReactions ? [{
key: 'reactions',
title: i18n.ts.reaction,
@ -103,15 +103,15 @@ const headerTabs = computed(() => user.value ? [{
}] : [], {
key: 'clips',
title: i18n.ts.clips,
icon: 'ph-paperclip ph-bold ph-lg',
icon: 'ti ti-paperclip',
}, {
key: 'lists',
title: i18n.ts.lists,
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
}, {
key: 'pages',
title: i18n.ts.pages,
icon: 'ph-newspaper ph-bold ph-lg',
icon: 'ti ti-news',
}, {
key: 'flashs',
title: 'Play',
@ -128,7 +128,7 @@ const headerTabs = computed(() => user.value ? [{
definePageMetadata(() => ({
title: i18n.ts.user,
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
...user.value ? {
title: user.value.name ? ` (@${user.value.username})` : `@${user.value.username}`,
subtitle: `@${getAcct(user.value)}`,

View file

@ -93,11 +93,11 @@ export function getDriveFileMenu(file: Misskey.entities.DriveFile, folder?: Miss
action: () => toggleSensitive(file),
}, {
text: i18n.ts.describeFile,
icon: 'ph-text-indent ph-bold ph-lg',
icon: 'ti ti-text-caption',
action: () => describe(file),
}, ...isImage ? [{
text: i18n.ts.cropImage,
icon: 'ph-crop ph-bold ph-lg',
icon: 'ti ti-crop',
action: () => os.cropImage(file, {
aspectRatio: NaN,
uploadFolder: folder ? folder.id : folder,

View file

@ -363,7 +363,7 @@ export function getNoteMenu(props: {
}),
{
type: 'parent' as const,
icon: 'ph-paperclip ph-bold ph-lg',
icon: 'ti ti-paperclip',
text: i18n.ts.clip,
children: () => getNoteClipMenu(props),
},
@ -387,7 +387,7 @@ export function getNoteMenu(props: {
} : undefined,
{
type: 'parent' as const,
icon: 'ph-user ph-bold ph-lg',
icon: 'ti ti-user',
text: i18n.ts.user,
children: async () => {
const user = appearNote.userId === $i?.id ? $i : await misskeyApi('users/show', { userId: appearNote.userId });
@ -400,7 +400,7 @@ export function getNoteMenu(props: {
...($i.isModerator || $i.isAdmin ? [
{ type: 'divider' },
{
icon: 'ph-megaphone ph-bold ph-lg',
icon: 'ti ti-speakerphone',
text: i18n.ts.promote,
action: promote
}]
@ -495,7 +495,7 @@ export function getNoteMenu(props: {
if (noteActions.length > 0) {
menu = menu.concat([{ type: "divider" }, ...noteActions.map(action => ({
icon: 'ph-plug ph-bold ph-lg',
icon: 'ti ti-plug',
text: action.title,
action: () => {
action.handler(appearNote);
@ -578,7 +578,7 @@ export function getRenoteMenu(props: {
},
}, {
text: i18n.ts.inChannelQuote,
icon: 'ph ph-quotes',
icon: 'ti ti-quote',
action: () => {
if (!props.mock) {
os.post({
@ -624,7 +624,7 @@ export function getRenoteMenu(props: {
},
}, (props.mock) ? undefined : {
text: i18n.ts.quote,
icon: 'ph ph-quotes',
icon: 'ti ti-quote',
action: () => {
os.post({
renote: appearNote,

View file

@ -153,7 +153,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
}
let menu = [{
icon: 'ph-at ph-bold ph-lg',
icon: 'ti ti-at',
text: i18n.ts.copyUsername,
action: () => {
copyToClipboard(`@${user.username}@${user.host ?? host}`);
@ -185,7 +185,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
copyToClipboard(`${url}/${canonical}`);
},
}, {
icon: 'ph-envelope ph-bold ph-lg',
icon: 'ti ti-mail',
text: i18n.ts.sendMessage,
action: () => {
const canonical = user.host === null ? `@${user.username}` : `@${user.username}@${user.host}`;
@ -199,7 +199,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
},
}, {
type: 'parent',
icon: 'ph-list ph-bold ph-lg',
icon: 'ti ti-list',
text: i18n.ts.addToList,
children: async () => {
const lists = await userListsCache.fetch();
@ -232,7 +232,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
},
}, {
type: 'parent',
icon: 'ph-flying-saucer ph-bold ph-lg',
icon: 'ti ti-antenna',
text: i18n.ts.addToAntenna,
children: async () => {
const antennas = await antennasCache.fetch();
@ -263,7 +263,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
if (iAmModerator) {
menu = menu.concat([{
type: 'parent',
icon: 'ph-seal-check ph-bold ph-lg',
icon: 'ti ti-badges',
text: i18n.ts.roles,
children: async () => {
const roles = await rolesCache.fetch();
@ -324,7 +324,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
text: user.isRenoteMuted ? i18n.ts.renoteUnmute : i18n.ts.renoteMute,
action: toggleRenoteMute,
}, {
icon: 'ph-prohibit ph-bold ph-lg',
icon: 'ti ti-ban',
text: user.isBlocking ? i18n.ts.unblock : i18n.ts.block,
action: toggleBlock,
}]);
@ -374,7 +374,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
if (userActions.length > 0) {
menu = menu.concat([{ type: 'divider' }, ...userActions.map(action => ({
icon: 'ph-plug ph-bold ph-lg',
icon: 'ti ti-plug',
text: action.title,
action: () => {
action.handler(user);

View file

@ -67,13 +67,13 @@ export function openInstanceMenu(ev: MouseEvent) {
}, { type: 'divider' }, {
type: 'link',
text: i18n.ts.ads,
icon: 'ph-flag ph-bold ph-lg',
icon: 'ti ti-ad',
to: '/ads',
}, ($i && ($i.isAdmin || $i.policies.canInvite) && instance.disableRegistration) ? {
type: 'link',
to: '/invite',
text: i18n.ts.invite,
icon: 'ph-user-plus ph-bold ph-lg',
icon: 'ti ti-user-plus',
} : undefined, {
type: 'parent',
text: i18n.ts.tools,
@ -92,7 +92,7 @@ export function openInstanceMenu(ev: MouseEvent) {
},
} : undefined, (instance.tosUrl) ? {
text: i18n.ts.termsOfService,
icon: 'ph-notebook ph-bold ph-lg',
icon: 'ti ti-notebook',
action: () => {
window.open(instance.tosUrl, '_blank', 'noopener');
},

View file

@ -118,13 +118,13 @@ function onContextmenu(ev: MouseEvent) {
type: 'label',
text: path,
}, {
icon: fullView.value ? 'ph-arrows-in-simple ph-bold ph-lg' : 'ph-frame-corners ph-bold ph-lg',
icon: fullView.value ? 'ti ti-minimize' : 'ti ti-maximize',
text: fullView.value ? i18n.ts.quitFullView : i18n.ts.fullView,
action: () => {
fullView.value = !fullView.value;
},
}, {
icon: 'ph-frame-corners ph-bold ph-lg',
icon: 'ti ti-window-maximize',
text: i18n.ts.openInWindow,
action: () => {
os.pageWindow(path);

View file

@ -50,7 +50,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<div v-if="isMobile" :class="$style.nav">
<button :class="$style.navButton" class="_button" @click="drawerMenuShowing = true"><i :class="$style.navButtonIcon" class="ph-list ph-bold ph-lg-2"></i><span v-if="menuIndicated" :class="$style.navButtonIndicator"><i class="_indicatorCircle"></i></span></button>
<button :class="$style.navButton" class="_button" @click="drawerMenuShowing = true"><i :class="$style.navButtonIcon" class="ti ti-menu-2"></i><span v-if="menuIndicated" :class="$style.navButtonIndicator"><i class="_indicatorCircle"></i></span></button>
<button :class="$style.navButton" class="_button" @click="mainRouter.push('/')"><i :class="$style.navButtonIcon" class="ti ti-home"></i></button>
<button :class="$style.navButton" class="_button" @click="mainRouter.push('/my/notifications')">
<i :class="$style.navButtonIcon" class="ph-bell ph-bold ph-lg"></i>

View file

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<XColumn :menu="menu" :column="column" :isStacked="isStacked" :refresher="() => timeline.reloadTimeline()">
<template #header>
<i class="ph-flying-saucer ph-bold ph-lg"></i><span style="margin-left: 8px;">{{ column.name }}</span>
<i class="ti ti-antenna"></i><span style="margin-left: 8px;">{{ column.name }}</span>
</template>
<MkTimeline v-if="column.antennaId" ref="timeline" src="antenna" :antenna="column.antennaId" @note="onNote"/>

View file

@ -165,7 +165,7 @@ function getMenu() {
stackLeftColumn(props.column.id);
},
}, props.isStacked ? {
icon: 'ph-frame-corners ph-bold ph-lg',
icon: 'ti ti-window-maximize',
text: i18n.ts._deck.popRight,
action: () => {
popRightColumn(props.column.id);

View file

@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<XColumn :column="column" :isStacked="isStacked" :refresher="() => reloadTimeline()">
<template #header><i class="ph-envelope ph-bold ph-lg" style="margin-right: 8px;"></i>{{ column.name }}</template>
<template #header><i class="ti ti-mail" style="margin-right: 8px;"></i>{{ column.name }}</template>
<MkNotes ref="tlComponent" :pagination="pagination"/>
</XColumn>

View file

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<XColumn :menu="menu" :column="column" :isStacked="isStacked" :refresher="() => timeline.reloadTimeline()">
<template #header>
<i class="ph-list ph-bold ph-lg"></i><span style="margin-left: 8px;">{{ column.name }}</span>
<i class="ti ti-list"></i><span style="margin-left: 8px;">{{ column.name }}</span>
</template>
<MkTimeline v-if="column.listId" ref="timeline" :key="column.listId + column.withRenotes + column.onlyFiles" src="list" :list="column.listId" :withRenotes="withRenotes" :onlyFiles="onlyFiles" @note="onNote"/>

View file

@ -66,7 +66,7 @@ function onContextmenu(ev: MouseEvent) {
type: 'label',
text: path,
}, {
icon: 'ph-frame-corners ph-bold ph-lg',
icon: 'ti ti-window-maximize',
text: i18n.ts.openInWindow,
action: () => {
os.pageWindow(path);

View file

@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<XColumn :column="column" :isStacked="isStacked" :refresher="() => reloadTimeline()">
<template #header><i class="ph-at ph-bold ph-lg" style="margin-right: 8px;"></i>{{ column.name }}</template>
<template #header><i class="ti ti-at" style="margin-right: 8px;"></i>{{ column.name }}</template>
<MkNotes ref="tlComponent" :pagination="pagination"/>
</XColumn>

View file

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<XColumn :menu="menu" :column="column" :isStacked="isStacked" :refresher="() => timeline.reloadTimeline()">
<template #header>
<i class="ph-seal-check ph-bold ph-lg"></i><span style="margin-left: 8px;">{{ column.name }}</span>
<i class="ti ti-badge"></i><span style="margin-left: 8px;">{{ column.name }}</span>
</template>
<MkTimeline v-if="column.roleId" ref="timeline" src="role" :role="column.roleId" @note="onNote"/>

View file

@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<button v-if="(!isDesktop || pageMetadata?.needWideArea) && !isMobile" :class="$style.widgetButton" class="_button" @click="widgetsShowing = true"><i class="ph-stack ph-bold ph-lg"></i></button>
<div v-if="isMobile" ref="navFooter" :class="$style.nav">
<button :class="$style.navButton" class="_button" @click="drawerMenuShowing = true"><i :class="$style.navButtonIcon" class="ph-list ph-bold ph-lg-2"></i><span v-if="menuIndicated" :class="$style.navButtonIndicator"><i class="_indicatorCircle"></i></span></button>
<button :class="$style.navButton" class="_button" @click="drawerMenuShowing = true"><i :class="$style.navButtonIcon" class="ti ti-menu-2"></i><span v-if="menuIndicated" :class="$style.navButtonIndicator"><i class="_indicatorCircle"></i></span></button>
<button :class="$style.navButton" class="_button" @click="isRoot ? top() : mainRouter.push('/')"><i :class="$style.navButtonIcon" class="ti ti-home"></i></button>
<button :class="$style.navButton" class="_button" @click="mainRouter.push('/my/notifications')">
<i :class="$style.navButtonIcon" class="ph-bell ph-bold ph-lg"></i>
@ -209,7 +209,7 @@ const onContextmenu = (ev) => {
type: 'label',
text: path,
}, {
icon: 'ph-frame-corners ph-bold ph-lg',
icon: 'ti ti-window-maximize',
text: i18n.ts.openInWindow,
action: () => {
os.pageWindow(path);

Some files were not shown because too many files have changed in this diff Show more