summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/frontend/src/components/MkNote.vue10
-rw-r--r--packages/frontend/src/components/MkNoteDetailed.vue8
-rw-r--r--packages/frontend/src/components/MkNoteHeader.vue2
-rw-r--r--packages/frontend/src/components/MkNoteSub.vue2
-rw-r--r--packages/frontend/src/components/MkNotification.vue8
-rw-r--r--packages/frontend/src/components/MkPageWindow.vue2
-rw-r--r--packages/frontend/src/components/MkPasswordDialog.vue4
-rw-r--r--packages/frontend/src/components/MkPostForm.vue12
-rw-r--r--packages/frontend/src/components/MkPostFormAttaches.vue4
-rw-r--r--packages/frontend/src/components/MkRolePreview.vue4
-rw-r--r--packages/frontend/src/components/MkSignin.vue2
-rw-r--r--packages/frontend/src/components/MkSignupDialog.form.vue4
-rw-r--r--packages/frontend/src/components/MkTutorialDialog.PostNote.vue4
-rw-r--r--packages/frontend/src/components/MkTutorialDialog.Timeline.vue2
-rw-r--r--packages/frontend/src/components/MkUrlPreview.vue4
-rw-r--r--packages/frontend/src/components/MkUserSetupDialog.vue8
-rw-r--r--packages/frontend/src/components/MkVisibilityPicker.vue4
-rw-r--r--packages/frontend/src/components/MkWindow.vue8
-rw-r--r--packages/frontend/src/components/MkYouTubePlayer.vue2
-rw-r--r--packages/frontend/src/components/global/MkPageHeader.stories.impl.ts6
-rw-r--r--packages/frontend/src/components/page/page.dynamic.vue2
-rw-r--r--packages/frontend/src/navbar.ts22
-rw-r--r--packages/frontend/src/pages/about.vue8
-rw-r--r--packages/frontend/src/pages/achievements.vue2
-rw-r--r--packages/frontend/src/pages/admin-file.vue2
-rw-r--r--packages/frontend/src/pages/admin-user.vue10
-rw-r--r--packages/frontend/src/pages/admin/RolesEditorFormula.vue2
-rw-r--r--packages/frontend/src/pages/admin/ads.vue2
-rw-r--r--packages/frontend/src/pages/admin/announcements.vue2
-rw-r--r--packages/frontend/src/pages/admin/branding.vue2
-rw-r--r--packages/frontend/src/pages/admin/database.vue2
-rw-r--r--packages/frontend/src/pages/admin/email-settings.vue2
-rw-r--r--packages/frontend/src/pages/admin/index.vue22
-rw-r--r--packages/frontend/src/pages/admin/instance-block.vue4
-rw-r--r--packages/frontend/src/pages/admin/invites.vue2
-rw-r--r--packages/frontend/src/pages/admin/relays.vue2
-rw-r--r--packages/frontend/src/pages/admin/roles.edit.vue2
-rw-r--r--packages/frontend/src/pages/admin/roles.role.vue2
-rw-r--r--packages/frontend/src/pages/admin/roles.vue2
-rw-r--r--packages/frontend/src/pages/admin/server-rules.vue2
-rw-r--r--packages/frontend/src/pages/admin/settings.vue2
-rw-r--r--packages/frontend/src/pages/ads.vue2
-rw-r--r--packages/frontend/src/pages/announcement.vue2
-rw-r--r--packages/frontend/src/pages/announcements.vue2
-rw-r--r--packages/frontend/src/pages/antenna-timeline.vue2
-rw-r--r--packages/frontend/src/pages/channel-editor.vue2
-rw-r--r--packages/frontend/src/pages/channel.vue2
-rw-r--r--packages/frontend/src/pages/clip.vue2
-rw-r--r--packages/frontend/src/pages/drive.file.info.vue2
-rw-r--r--packages/frontend/src/pages/drop-and-fusion.vue2
-rw-r--r--packages/frontend/src/pages/emoji-edit-dialog.vue2
-rw-r--r--packages/frontend/src/pages/explore.vue4
-rw-r--r--packages/frontend/src/pages/follow-requests.vue2
-rw-r--r--packages/frontend/src/pages/games.vue2
-rw-r--r--packages/frontend/src/pages/install-extensions.vue4
-rw-r--r--packages/frontend/src/pages/invite.vue4
-rw-r--r--packages/frontend/src/pages/list.vue2
-rw-r--r--packages/frontend/src/pages/my-antennas/create.vue2
-rw-r--r--packages/frontend/src/pages/my-antennas/edit.vue2
-rw-r--r--packages/frontend/src/pages/my-antennas/index.vue2
-rw-r--r--packages/frontend/src/pages/my-clips/index.vue4
-rw-r--r--packages/frontend/src/pages/my-lists/index.vue2
-rw-r--r--packages/frontend/src/pages/my-lists/list.vue4
-rw-r--r--packages/frontend/src/pages/note.vue4
-rw-r--r--packages/frontend/src/pages/notifications.vue4
-rw-r--r--packages/frontend/src/pages/page-editor/page-editor.container.vue2
-rw-r--r--packages/frontend/src/pages/reversi/game.vue2
-rw-r--r--packages/frontend/src/pages/reversi/index.vue10
-rw-r--r--packages/frontend/src/pages/role.vue2
-rw-r--r--packages/frontend/src/pages/settings/apps.vue2
-rw-r--r--packages/frontend/src/pages/settings/email.vue4
-rw-r--r--packages/frontend/src/pages/settings/import-export.vue2
-rw-r--r--packages/frontend/src/pages/settings/index.vue14
-rw-r--r--packages/frontend/src/pages/settings/mute-block.vue4
-rw-r--r--packages/frontend/src/pages/settings/navbar.vue4
-rw-r--r--packages/frontend/src/pages/settings/plugin.vue2
-rw-r--r--packages/frontend/src/pages/settings/profile.vue6
-rw-r--r--packages/frontend/src/pages/settings/roles.vue2
-rw-r--r--packages/frontend/src/pages/settings/statusbar.vue2
-rw-r--r--packages/frontend/src/pages/settings/theme.vue6
-rw-r--r--packages/frontend/src/pages/theme-editor.vue2
-rw-r--r--packages/frontend/src/pages/timeline.vue6
-rw-r--r--packages/frontend/src/pages/user-list-timeline.vue2
-rw-r--r--packages/frontend/src/pages/user/followers.vue2
-rw-r--r--packages/frontend/src/pages/user/following.vue2
-rw-r--r--packages/frontend/src/pages/user/index.vue10
-rw-r--r--packages/frontend/src/scripts/get-drive-file-menu.ts4
-rw-r--r--packages/frontend/src/scripts/get-note-menu.ts12
-rw-r--r--packages/frontend/src/scripts/get-user-menu.ts14
-rw-r--r--packages/frontend/src/ui/_common_/common.ts6
-rw-r--r--packages/frontend/src/ui/classic.vue4
-rw-r--r--packages/frontend/src/ui/deck.vue2
-rw-r--r--packages/frontend/src/ui/deck/antenna-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/column.vue2
-rw-r--r--packages/frontend/src/ui/deck/direct-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/list-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/main-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/mentions-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/role-timeline-column.vue2
-rw-r--r--packages/frontend/src/ui/universal.vue4
-rw-r--r--packages/frontend/src/ui/visitor.vue6
-rw-r--r--packages/frontend/src/widgets/WidgetTimeline.vue8
-rw-r--r--packages/frontend/src/widgets/server-metric/disk.vue2
-rw-r--r--packages/frontend/vite.config.ts56
104 files changed, 267 insertions, 213 deletions
diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index bcf2f35c0f..b8ce7ed830 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue
index 05d37694c1..3904d33cfe 100644
--- a/packages/frontend/src/components/MkNoteDetailed.vue
+++ b/packages/frontend/src/components/MkNoteDetailed.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkNoteHeader.vue b/packages/frontend/src/components/MkNoteHeader.vue
index 7689a9f9a1..fd5da0d687 100644
--- a/packages/frontend/src/components/MkNoteHeader.vue
+++ b/packages/frontend/src/components/MkNoteHeader.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkNoteSub.vue b/packages/frontend/src/components/MkNoteSub.vue
index 66d1e51a6c..410b1735d3 100644
--- a/packages/frontend/src/components/MkNoteSub.vue
+++ b/packages/frontend/src/components/MkNoteSub.vue
@@ -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">
diff --git a/packages/frontend/src/components/MkNotification.vue b/packages/frontend/src/components/MkNotification.vue
index cb54765de7..8917c685ca 100644
--- a/packages/frontend/src/components/MkNotification.vue
+++ b/packages/frontend/src/components/MkNotification.vue
@@ -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使うと一部ブラウザで刺さるので念の為 -->
diff --git a/packages/frontend/src/components/MkPageWindow.vue b/packages/frontend/src/components/MkPageWindow.vue
index 795f82e8a6..aa8bfb4227 100644
--- a/packages/frontend/src/components/MkPageWindow.vue
+++ b/packages/frontend/src/components/MkPageWindow.vue
@@ -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,
}, {
diff --git a/packages/frontend/src/components/MkPasswordDialog.vue b/packages/frontend/src/components/MkPasswordDialog.vue
index 3a13326946..3cdf077626 100644
--- a/packages/frontend/src/components/MkPasswordDialog.vue
+++ b/packages/frontend/src/components/MkPasswordDialog.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue
index 0f49110cfd..30f8765b0b 100644
--- a/packages/frontend/src/components/MkPostForm.vue
+++ b/packages/frontend/src/components/MkPostForm.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkPostFormAttaches.vue b/packages/frontend/src/components/MkPostFormAttaches.vue
index 3a38dc40c6..a979cbc59f 100644
--- a/packages/frontend/src/components/MkPostFormAttaches.vue
+++ b/packages/frontend/src/components/MkPostFormAttaches.vue
@@ -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',
diff --git a/packages/frontend/src/components/MkRolePreview.vue b/packages/frontend/src/components/MkRolePreview.vue
index 603c531aa5..c1b922198f 100644
--- a/packages/frontend/src/components/MkRolePreview.vue
+++ b/packages/frontend/src/components/MkRolePreview.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue
index 95eb53e52d..a46a35c45c 100644
--- a/packages/frontend/src/components/MkSignin.vue
+++ b/packages/frontend/src/components/MkSignin.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkSignupDialog.form.vue b/packages/frontend/src/components/MkSignupDialog.form.vue
index bd5fd979a5..e673b6d530 100644
--- a/packages/frontend/src/components/MkSignupDialog.form.vue
+++ b/packages/frontend/src/components/MkSignupDialog.form.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkTutorialDialog.PostNote.vue b/packages/frontend/src/components/MkTutorialDialog.PostNote.vue
index 25d0ba7173..44566b1d9b 100644
--- a/packages/frontend/src/components/MkTutorialDialog.PostNote.vue
+++ b/packages/frontend/src/components/MkTutorialDialog.PostNote.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkTutorialDialog.Timeline.vue b/packages/frontend/src/components/MkTutorialDialog.Timeline.vue
index 25f367da74..11992e00db 100644
--- a/packages/frontend/src/components/MkTutorialDialog.Timeline.vue
+++ b/packages/frontend/src/components/MkTutorialDialog.Timeline.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkUrlPreview.vue b/packages/frontend/src/components/MkUrlPreview.vue
index 09d2c8bac4..1c9ba35637 100644
--- a/packages/frontend/src/components/MkUrlPreview.vue
+++ b/packages/frontend/src/components/MkUrlPreview.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkUserSetupDialog.vue b/packages/frontend/src/components/MkUserSetupDialog.vue
index bd446be96b..1d376382ca 100644
--- a/packages/frontend/src/components/MkUserSetupDialog.vue
+++ b/packages/frontend/src/components/MkUserSetupDialog.vue
@@ -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;"/>
diff --git a/packages/frontend/src/components/MkVisibilityPicker.vue b/packages/frontend/src/components/MkVisibilityPicker.vue
index a2865e32fb..e0aec8b2f3 100644
--- a/packages/frontend/src/components/MkVisibilityPicker.vue
+++ b/packages/frontend/src/components/MkVisibilityPicker.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkWindow.vue b/packages/frontend/src/components/MkWindow.vue
index 80648cdd67..303e49de00 100644
--- a/packages/frontend/src/components/MkWindow.vue
+++ b/packages/frontend/src/components/MkWindow.vue
@@ -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>
diff --git a/packages/frontend/src/components/MkYouTubePlayer.vue b/packages/frontend/src/components/MkYouTubePlayer.vue
index 3ad2a95bc3..1fad222fc5 100644
--- a/packages/frontend/src/components/MkYouTubePlayer.vue
+++ b/packages/frontend/src/components/MkYouTubePlayer.vue
@@ -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>
diff --git a/packages/frontend/src/components/global/MkPageHeader.stories.impl.ts b/packages/frontend/src/components/global/MkPageHeader.stories.impl.ts
index 22af9c1586..1d079edd2c 100644
--- a/packages/frontend/src/components/global/MkPageHeader.stories.impl.ts
+++ b/packages/frontend/src/components/global/MkPageHeader.stories.impl.ts
@@ -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',
},
],
},
diff --git a/packages/frontend/src/components/page/page.dynamic.vue b/packages/frontend/src/components/page/page.dynamic.vue
index 7f80f0c455..8c511a690d 100644
--- a/packages/frontend/src/components/page/page.dynamic.vue
+++ b/packages/frontend/src/components/page/page.dynamic.vue
@@ -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>
diff --git a/packages/frontend/src/navbar.ts b/packages/frontend/src/navbar.ts
index 621a5fc323..69314b563f 100644
--- a/packages/frontend/src/navbar.ts
+++ b/packages/frontend/src/navbar.ts
@@ -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}`,
},
diff --git a/packages/frontend/src/pages/about.vue b/packages/frontend/src/pages/about.vue
index 921405c607..4fc1c2570a 100644
--- a/packages/frontend/src/pages/about.vue
+++ b/packages/frontend/src/pages/about.vue
@@ -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>
diff --git a/packages/frontend/src/pages/achievements.vue b/packages/frontend/src/pages/achievements.vue
index 4e496c3c6c..77ab473ea2 100644
--- a/packages/frontend/src/pages/achievements.vue
+++ b/packages/frontend/src/pages/achievements.vue
@@ -50,7 +50,7 @@ onDeactivated(() => {
definePageMetadata(() => ({
title: i18n.ts.achievements,
- icon: 'ph-trophy ph-bold ph-lg',
+ icon: 'ti ti-medal',
}));
</script>
diff --git a/packages/frontend/src/pages/admin-file.vue b/packages/frontend/src/pages/admin-file.vue
index dca7ded646..d8311186ab 100644
--- a/packages/frontend/src/pages/admin-file.vue
+++ b/packages/frontend/src/pages/admin-file.vue
@@ -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',
diff --git a/packages/frontend/src/pages/admin-user.vue b/packages/frontend/src/pages/admin-user.vue
index 25f2096d07..7cc2c28dd7 100644
--- a/packages/frontend/src/pages/admin-user.vue
+++ b/packages/frontend/src/pages/admin-user.vue
@@ -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,
diff --git a/packages/frontend/src/pages/admin/RolesEditorFormula.vue b/packages/frontend/src/pages/admin/RolesEditorFormula.vue
index 9bcdd3b7b6..f001a4ac20 100644
--- a/packages/frontend/src/pages/admin/RolesEditorFormula.vue
+++ b/packages/frontend/src/pages/admin/RolesEditorFormula.vue
@@ -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>
diff --git a/packages/frontend/src/pages/admin/ads.vue b/packages/frontend/src/pages/admin/ads.vue
index 8026798221..bd442ccc69 100644
--- a/packages/frontend/src/pages/admin/ads.vue
+++ b/packages/frontend/src/pages/admin/ads.vue
@@ -257,7 +257,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.ads,
- icon: 'ph-flag ph-bold ph-lg',
+ icon: 'ti ti-ad',
}));
</script>
diff --git a/packages/frontend/src/pages/admin/announcements.vue b/packages/frontend/src/pages/admin/announcements.vue
index 00392ad2d3..e7fb62ec1d 100644
--- a/packages/frontend/src/pages/admin/announcements.vue
+++ b/packages/frontend/src/pages/admin/announcements.vue
@@ -159,6 +159,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.announcements,
- icon: 'ph-megaphone ph-bold ph-lg',
+ icon: 'ti ti-speakerphone',
}));
</script>
diff --git a/packages/frontend/src/pages/admin/branding.vue b/packages/frontend/src/pages/admin/branding.vue
index e8b34fa41a..2e14aef0b9 100644
--- a/packages/frontend/src/pages/admin/branding.vue
+++ b/packages/frontend/src/pages/admin/branding.vue
@@ -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>
diff --git a/packages/frontend/src/pages/admin/database.vue b/packages/frontend/src/pages/admin/database.vue
index a64e07b4c7..e092efd92c 100644
--- a/packages/frontend/src/pages/admin/database.vue
+++ b/packages/frontend/src/pages/admin/database.vue
@@ -35,6 +35,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.database,
- icon: 'ph-database ph-bold ph-lg',
+ icon: 'ti ti-database',
}));
</script>
diff --git a/packages/frontend/src/pages/admin/email-settings.vue b/packages/frontend/src/pages/admin/email-settings.vue
index ced0c8290c..4a858887f3 100644
--- a/packages/frontend/src/pages/admin/email-settings.vue
+++ b/packages/frontend/src/pages/admin/email-settings.vue
@@ -132,7 +132,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.emailServer,
- icon: 'ph-envelope ph-bold ph-lg',
+ icon: 'ti ti-mail',
}));
</script>
diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue
index 4402af7e3e..098e845dab 100644
--- a/packages/frontend/src/pages/admin/index.vue
+++ b/packages/frontend/src/pages/admin/index.vue
@@ -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();
},
diff --git a/packages/frontend/src/pages/admin/instance-block.vue b/packages/frontend/src/pages/admin/instance-block.vue
index 7247fcf3ce..6b14bd42c2 100644
--- a/packages/frontend/src/pages/admin/instance-block.vue
+++ b/packages/frontend/src/pages/admin/instance-block.vue
@@ -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>
diff --git a/packages/frontend/src/pages/admin/invites.vue b/packages/frontend/src/pages/admin/invites.vue
index d5f473b4b2..9f172140bc 100644
--- a/packages/frontend/src/pages/admin/invites.vue
+++ b/packages/frontend/src/pages/admin/invites.vue
@@ -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>
diff --git a/packages/frontend/src/pages/admin/relays.vue b/packages/frontend/src/pages/admin/relays.vue
index bd0b886bc8..04982eea1f 100644
--- a/packages/frontend/src/pages/admin/relays.vue
+++ b/packages/frontend/src/pages/admin/relays.vue
@@ -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>
diff --git a/packages/frontend/src/pages/admin/roles.edit.vue b/packages/frontend/src/pages/admin/roles.edit.vue
index 544a98e675..60f06d50ba 100644
--- a/packages/frontend/src/pages/admin/roles.edit.vue
+++ b/packages/frontend/src/pages/admin/roles.edit.vue
@@ -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>
diff --git a/packages/frontend/src/pages/admin/roles.role.vue b/packages/frontend/src/pages/admin/roles.role.vue
index ad208ea729..6bce60cfb9 100644
--- a/packages/frontend/src/pages/admin/roles.role.vue
+++ b/packages/frontend/src/pages/admin/roles.role.vue
@@ -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>
diff --git a/packages/frontend/src/pages/admin/roles.vue b/packages/frontend/src/pages/admin/roles.vue
index 3760cc3479..ffd7577689 100644
--- a/packages/frontend/src/pages/admin/roles.vue
+++ b/packages/frontend/src/pages/admin/roles.vue
@@ -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>
diff --git a/packages/frontend/src/pages/admin/server-rules.vue b/packages/frontend/src/pages/admin/server-rules.vue
index 19104e4e48..36e2a29923 100644
--- a/packages/frontend/src/pages/admin/server-rules.vue
+++ b/packages/frontend/src/pages/admin/server-rules.vue
@@ -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]"/>
diff --git a/packages/frontend/src/pages/admin/settings.vue b/packages/frontend/src/pages/admin/settings.vue
index 1cc964eea4..90ac259c53 100644
--- a/packages/frontend/src/pages/admin/settings.vue
+++ b/packages/frontend/src/pages/admin/settings.vue
@@ -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>
diff --git a/packages/frontend/src/pages/ads.vue b/packages/frontend/src/pages/ads.vue
index c6373e8d60..b31807f9f5 100644
--- a/packages/frontend/src/pages/ads.vue
+++ b/packages/frontend/src/pages/ads.vue
@@ -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>
diff --git a/packages/frontend/src/pages/announcement.vue b/packages/frontend/src/pages/announcement.vue
index f624494801..85ae9062d4 100644
--- a/packages/frontend/src/pages/announcement.vue
+++ b/packages/frontend/src/pages/announcement.vue
@@ -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>
diff --git a/packages/frontend/src/pages/announcements.vue b/packages/frontend/src/pages/announcements.vue
index 0fa70c14d5..ffbea15a73 100644
--- a/packages/frontend/src/pages/announcements.vue
+++ b/packages/frontend/src/pages/announcements.vue
@@ -113,7 +113,7 @@ const headerTabs = computed(() => [{
definePageMetadata(() => ({
title: i18n.ts.announcements,
- icon: 'ph-megaphone ph-bold ph-lg',
+ icon: 'ti ti-speakerphone',
}));
</script>
diff --git a/packages/frontend/src/pages/antenna-timeline.vue b/packages/frontend/src/pages/antenna-timeline.vue
index 4dcb107b35..82dcf57d2d 100644
--- a/packages/frontend/src/pages/antenna-timeline.vue
+++ b/packages/frontend/src/pages/antenna-timeline.vue
@@ -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>
diff --git a/packages/frontend/src/pages/channel-editor.vue b/packages/frontend/src/pages/channel-editor.vue
index 045dde4afc..d3f4a65b89 100644
--- a/packages/frontend/src/pages/channel-editor.vue
+++ b/packages/frontend/src/pages/channel-editor.vue
@@ -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>
diff --git a/packages/frontend/src/pages/channel.vue b/packages/frontend/src/pages/channel.vue
index f1e10a3d4b..930cbebb00 100644
--- a/packages/frontend/src/pages/channel.vue
+++ b/packages/frontend/src/pages/channel.vue
@@ -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,
diff --git a/packages/frontend/src/pages/clip.vue b/packages/frontend/src/pages/clip.vue
index 0b2f71e489..c9aaeb96e5 100644
--- a/packages/frontend/src/pages/clip.vue
+++ b/packages/frontend/src/pages/clip.vue
@@ -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>
diff --git a/packages/frontend/src/pages/drive.file.info.vue b/packages/frontend/src/pages/drive.file.info.vue
index d206722b9d..4749d7c981 100644
--- a/packages/frontend/src/pages/drive.file.info.vue
+++ b/packages/frontend/src/pages/drive.file.info.vue
@@ -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>
diff --git a/packages/frontend/src/pages/drop-and-fusion.vue b/packages/frontend/src/pages/drop-and-fusion.vue
index e8c0c556fa..54352c9b0d 100644
--- a/packages/frontend/src/pages/drop-and-fusion.vue
+++ b/packages/frontend/src/pages/drop-and-fusion.vue
@@ -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>
diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue
index 93a9a8fef6..5805fb4589 100644
--- a/packages/frontend/src/pages/emoji-edit-dialog.vue
+++ b/packages/frontend/src/pages/emoji-edit-dialog.vue
@@ -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>
diff --git a/packages/frontend/src/pages/explore.vue b/packages/frontend/src/pages/explore.vue
index 3a8977ff0b..b1a8183d9b 100644
--- a/packages/frontend/src/pages/explore.vue
+++ b/packages/frontend/src/pages/explore.vue
@@ -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,
}]);
diff --git a/packages/frontend/src/pages/follow-requests.vue b/packages/frontend/src/pages/follow-requests.vue
index 87d851b7be..d50887b2e9 100644
--- a/packages/frontend/src/pages/follow-requests.vue
+++ b/packages/frontend/src/pages/follow-requests.vue
@@ -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>
diff --git a/packages/frontend/src/pages/games.vue b/packages/frontend/src/pages/games.vue
index 2822fbde89..afd6df1ad9 100644
--- a/packages/frontend/src/pages/games.vue
+++ b/packages/frontend/src/pages/games.vue
@@ -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>
diff --git a/packages/frontend/src/pages/install-extensions.vue b/packages/frontend/src/pages/install-extensions.vue
index 5141708083..4bee437f65 100644
--- a/packages/frontend/src/pages/install-extensions.vue
+++ b/packages/frontend/src/pages/install-extensions.vue
@@ -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>
diff --git a/packages/frontend/src/pages/invite.vue b/packages/frontend/src/pages/invite.vue
index 45864d37ff..ef485a9446 100644
--- a/packages/frontend/src/pages/invite.vue
+++ b/packages/frontend/src/pages/invite.vue
@@ -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>
diff --git a/packages/frontend/src/pages/list.vue b/packages/frontend/src/pages/list.vue
index 870bc47e93..091ea53124 100644
--- a/packages/frontend/src/pages/list.vue
+++ b/packages/frontend/src/pages/list.vue
@@ -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>
diff --git a/packages/frontend/src/pages/my-antennas/create.vue b/packages/frontend/src/pages/my-antennas/create.vue
index ee2330a4f7..2d026d2fa9 100644
--- a/packages/frontend/src/pages/my-antennas/create.vue
+++ b/packages/frontend/src/pages/my-antennas/create.vue
@@ -41,6 +41,6 @@ function onAntennaCreated() {
definePageMetadata(() => ({
title: i18n.ts.manageAntennas,
- icon: 'ph-flying-saucer ph-bold ph-lg',
+ icon: 'ti ti-antenna',
}));
</script>
diff --git a/packages/frontend/src/pages/my-antennas/edit.vue b/packages/frontend/src/pages/my-antennas/edit.vue
index a262e932f3..9471be8575 100644
--- a/packages/frontend/src/pages/my-antennas/edit.vue
+++ b/packages/frontend/src/pages/my-antennas/edit.vue
@@ -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>
diff --git a/packages/frontend/src/pages/my-antennas/index.vue b/packages/frontend/src/pages/my-antennas/index.vue
index f42ecb3cc1..58c8643eb5 100644
--- a/packages/frontend/src/pages/my-antennas/index.vue
+++ b/packages/frontend/src/pages/my-antennas/index.vue
@@ -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(() => {
diff --git a/packages/frontend/src/pages/my-clips/index.vue b/packages/frontend/src/pages/my-clips/index.vue
index 43219b7557..1a0d7177fc 100644
--- a/packages/frontend/src/pages/my-clips/index.vue
+++ b/packages/frontend/src/pages/my-clips/index.vue
@@ -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>
diff --git a/packages/frontend/src/pages/my-lists/index.vue b/packages/frontend/src/pages/my-lists/index.vue
index 97c81580ad..eb512cee2e 100644
--- a/packages/frontend/src/pages/my-lists/index.vue
+++ b/packages/frontend/src/pages/my-lists/index.vue
@@ -73,7 +73,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.manageLists,
- icon: 'ph-list ph-bold ph-lg',
+ icon: 'ti ti-list',
}));
onActivated(() => {
diff --git a/packages/frontend/src/pages/my-lists/list.vue b/packages/frontend/src/pages/my-lists/list.vue
index c3461a31e1..369d5a5ef8 100644
--- a/packages/frontend/src/pages/my-lists/list.vue
+++ b/packages/frontend/src/pages/my-lists/list.vue
@@ -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>
diff --git a/packages/frontend/src/pages/note.vue b/packages/frontend/src/pages/note.vue
index 8c636d9e37..78b44f05a1 100644
--- a/packages/frontend/src/pages/note.vue
+++ b/packages/frontend/src/pages/note.vue
@@ -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>
diff --git a/packages/frontend/src/pages/notifications.vue b/packages/frontend/src/pages/notifications.vue
index 6306bd0d90..bfe7bc495f 100644
--- a/packages/frontend/src/pages/notifications.vue
+++ b/packages/frontend/src/pages/notifications.vue
@@ -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(() => ({
diff --git a/packages/frontend/src/pages/page-editor/page-editor.container.vue b/packages/frontend/src/pages/page-editor/page-editor.container.vue
index 68c1b21f0a..2531de0e62 100644
--- a/packages/frontend/src/pages/page-editor/page-editor.container.vue
+++ b/packages/frontend/src/pages/page-editor/page-editor.container.vue
@@ -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>
diff --git a/packages/frontend/src/pages/reversi/game.vue b/packages/frontend/src/pages/reversi/game.vue
index 21b7797240..eadc51881c 100644
--- a/packages/frontend/src/pages/reversi/game.vue
+++ b/packages/frontend/src/pages/reversi/game.vue
@@ -115,6 +115,6 @@ onUnmounted(() => {
definePageMetadata(() => ({
title: 'Reversi',
- icon: 'ph-game-controller ph-bold ph-lg',
+ icon: 'ti ti-device-gamepad',
}));
</script>
diff --git a/packages/frontend/src/pages/reversi/index.vue b/packages/frontend/src/pages/reversi/index.vue
index 5de8fd5f79..51a03e4418 100644
--- a/packages/frontend/src/pages/reversi/index.vue
+++ b/packages/frontend/src/pages/reversi/index.vue
@@ -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>
diff --git a/packages/frontend/src/pages/role.vue b/packages/frontend/src/pages/role.vue
index 3a4af9d964..45edbc5da2 100644
--- a/packages/frontend/src/pages/role.vue
+++ b/packages/frontend/src/pages/role.vue
@@ -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>
diff --git a/packages/frontend/src/pages/settings/apps.vue b/packages/frontend/src/pages/settings/apps.vue
index cf4ba3abf2..c58ea5d378 100644
--- a/packages/frontend/src/pages/settings/apps.vue
+++ b/packages/frontend/src/pages/settings/apps.vue
@@ -77,7 +77,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.installedApps,
- icon: 'ph-plug ph-bold ph-lg',
+ icon: 'ti ti-plug',
}));
</script>
diff --git a/packages/frontend/src/pages/settings/email.vue b/packages/frontend/src/pages/settings/email.vue
index a69cfd3314..f226647569 100644
--- a/packages/frontend/src/pages/settings/email.vue
+++ b/packages/frontend/src/pages/settings/email.vue
@@ -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>
diff --git a/packages/frontend/src/pages/settings/import-export.vue b/packages/frontend/src/pages/settings/import-export.vue
index 4122b1b6a5..8bb5972aa2 100644
--- a/packages/frontend/src/pages/settings/import-export.vue
+++ b/packages/frontend/src/pages/settings/import-export.vue
@@ -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>
diff --git a/packages/frontend/src/pages/settings/index.vue b/packages/frontend/src/pages/settings/index.vue
index 437e9af806..91d19e3eb6 100644
--- a/packages/frontend/src/pages/settings/index.vue
+++ b/packages/frontend/src/pages/settings/index.vue
@@ -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',
diff --git a/packages/frontend/src/pages/settings/mute-block.vue b/packages/frontend/src/pages/settings/mute-block.vue
index 6b95e84205..3c20505497 100644
--- a/packages/frontend/src/pages/settings/mute-block.vue
+++ b/packages/frontend/src/pages/settings/mute-block.vue
@@ -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>
diff --git a/packages/frontend/src/pages/settings/navbar.vue b/packages/frontend/src/pages/settings/navbar.vue
index 0081a2e02a..7f8460e316 100644
--- a/packages/frontend/src/pages/settings/navbar.vue
+++ b/packages/frontend/src/pages/settings/navbar.vue
@@ -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>
diff --git a/packages/frontend/src/pages/settings/plugin.vue b/packages/frontend/src/pages/settings/plugin.vue
index d2125486be..9804454e66 100644
--- a/packages/frontend/src/pages/settings/plugin.vue
+++ b/packages/frontend/src/pages/settings/plugin.vue
@@ -141,6 +141,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.plugins,
- icon: 'ph-plug ph-bold ph-lg',
+ icon: 'ti ti-plug',
}));
</script>
diff --git a/packages/frontend/src/pages/settings/profile.vue b/packages/frontend/src/pages/settings/profile.vue
index 7f7ed39bbf..9c276f5525 100644
--- a/packages/frontend/src/pages/settings/profile.vue
+++ b/packages/frontend/src/pages/settings/profile.vue
@@ -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>
diff --git a/packages/frontend/src/pages/settings/roles.vue b/packages/frontend/src/pages/settings/roles.vue
index 273cf013f0..5346a58a79 100644
--- a/packages/frontend/src/pages/settings/roles.vue
+++ b/packages/frontend/src/pages/settings/roles.vue
@@ -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>
diff --git a/packages/frontend/src/pages/settings/statusbar.vue b/packages/frontend/src/pages/settings/statusbar.vue
index fa924d13f0..1ae3de7994 100644
--- a/packages/frontend/src/pages/settings/statusbar.vue
+++ b/packages/frontend/src/pages/settings/statusbar.vue
@@ -52,6 +52,6 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.statusbar,
- icon: 'ph-list ph-bold ph-lg',
+ icon: 'ti ti-list',
}));
</script>
diff --git a/packages/frontend/src/pages/settings/theme.vue b/packages/frontend/src/pages/settings/theme.vue
index e678a7d183..37117205d2 100644
--- a/packages/frontend/src/pages/settings/theme.vue
+++ b/packages/frontend/src/pages/settings/theme.vue
@@ -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>
diff --git a/packages/frontend/src/pages/theme-editor.vue b/packages/frontend/src/pages/theme-editor.vue
index aec30c9581..1cdccdc244 100644
--- a/packages/frontend/src/pages/theme-editor.vue
+++ b/packages/frontend/src/pages/theme-editor.vue
@@ -221,7 +221,7 @@ const headerTabs = computed(() => []);
definePageMetadata(() => ({
title: i18n.ts.themeEditor,
- icon: 'ph-palette ph-bold ph-lg',
+ icon: 'ti ti-palette',
}));
</script>
diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue
index 80640f68b8..5cb358cdb5 100644
--- a/packages/frontend/src/pages/timeline.vue
+++ b/packages/frontend/src/pages/timeline.vue
@@ -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>
diff --git a/packages/frontend/src/pages/user-list-timeline.vue b/packages/frontend/src/pages/user-list-timeline.vue
index 6cefe88f30..6566263c01 100644
--- a/packages/frontend/src/pages/user-list-timeline.vue
+++ b/packages/frontend/src/pages/user-list-timeline.vue
@@ -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>
diff --git a/packages/frontend/src/pages/user/followers.vue b/packages/frontend/src/pages/user/followers.vue
index e8addf88b7..70883242e5 100644
--- a/packages/frontend/src/pages/user/followers.vue
+++ b/packages/frontend/src/pages/user/followers.vue
@@ -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,
diff --git a/packages/frontend/src/pages/user/following.vue b/packages/frontend/src/pages/user/following.vue
index 8e4da40383..37b25f694f 100644
--- a/packages/frontend/src/pages/user/following.vue
+++ b/packages/frontend/src/pages/user/following.vue
@@ -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,
diff --git a/packages/frontend/src/pages/user/index.vue b/packages/frontend/src/pages/user/index.vue
index 9e0bed80e6..e42a6fad9f 100644
--- a/packages/frontend/src/pages/user/index.vue
+++ b/packages/frontend/src/pages/user/index.vue
@@ -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)}`,
diff --git a/packages/frontend/src/scripts/get-drive-file-menu.ts b/packages/frontend/src/scripts/get-drive-file-menu.ts
index 31164b1878..7aca5f83b2 100644
--- a/packages/frontend/src/scripts/get-drive-file-menu.ts
+++ b/packages/frontend/src/scripts/get-drive-file-menu.ts
@@ -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,
diff --git a/packages/frontend/src/scripts/get-note-menu.ts b/packages/frontend/src/scripts/get-note-menu.ts
index 23e40dad69..3851bde534 100644
--- a/packages/frontend/src/scripts/get-note-menu.ts
+++ b/packages/frontend/src/scripts/get-note-menu.ts
@@ -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,
diff --git a/packages/frontend/src/scripts/get-user-menu.ts b/packages/frontend/src/scripts/get-user-menu.ts
index e485e610fd..906a3f999c 100644
--- a/packages/frontend/src/scripts/get-user-menu.ts
+++ b/packages/frontend/src/scripts/get-user-menu.ts
@@ -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);
diff --git a/packages/frontend/src/ui/_common_/common.ts b/packages/frontend/src/ui/_common_/common.ts
index dc1848a32c..41b0a7b7a0 100644
--- a/packages/frontend/src/ui/_common_/common.ts
+++ b/packages/frontend/src/ui/_common_/common.ts
@@ -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');
},
diff --git a/packages/frontend/src/ui/classic.vue b/packages/frontend/src/ui/classic.vue
index ea9ea56b90..ce5a22a61d 100644
--- a/packages/frontend/src/ui/classic.vue
+++ b/packages/frontend/src/ui/classic.vue
@@ -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);
diff --git a/packages/frontend/src/ui/deck.vue b/packages/frontend/src/ui/deck.vue
index 744591c712..1429bc4a19 100644
--- a/packages/frontend/src/ui/deck.vue
+++ b/packages/frontend/src/ui/deck.vue
@@ -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>
diff --git a/packages/frontend/src/ui/deck/antenna-column.vue b/packages/frontend/src/ui/deck/antenna-column.vue
index 398dad7f16..0185d742eb 100644
--- a/packages/frontend/src/ui/deck/antenna-column.vue
+++ b/packages/frontend/src/ui/deck/antenna-column.vue
@@ -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"/>
diff --git a/packages/frontend/src/ui/deck/column.vue b/packages/frontend/src/ui/deck/column.vue
index fafd34816d..0e870c7a27 100644
--- a/packages/frontend/src/ui/deck/column.vue
+++ b/packages/frontend/src/ui/deck/column.vue
@@ -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);
diff --git a/packages/frontend/src/ui/deck/direct-column.vue b/packages/frontend/src/ui/deck/direct-column.vue
index 09412ce386..e011de0e3b 100644
--- a/packages/frontend/src/ui/deck/direct-column.vue
+++ b/packages/frontend/src/ui/deck/direct-column.vue
@@ -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>
diff --git a/packages/frontend/src/ui/deck/list-column.vue b/packages/frontend/src/ui/deck/list-column.vue
index c92e5d9ffe..913f9b1688 100644
--- a/packages/frontend/src/ui/deck/list-column.vue
+++ b/packages/frontend/src/ui/deck/list-column.vue
@@ -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"/>
diff --git a/packages/frontend/src/ui/deck/main-column.vue b/packages/frontend/src/ui/deck/main-column.vue
index 847dcf247a..79c9671917 100644
--- a/packages/frontend/src/ui/deck/main-column.vue
+++ b/packages/frontend/src/ui/deck/main-column.vue
@@ -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);
diff --git a/packages/frontend/src/ui/deck/mentions-column.vue b/packages/frontend/src/ui/deck/mentions-column.vue
index 70ec98119a..81926dd7cb 100644
--- a/packages/frontend/src/ui/deck/mentions-column.vue
+++ b/packages/frontend/src/ui/deck/mentions-column.vue
@@ -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>
diff --git a/packages/frontend/src/ui/deck/role-timeline-column.vue b/packages/frontend/src/ui/deck/role-timeline-column.vue
index 62a82ff51f..24e31681a5 100644
--- a/packages/frontend/src/ui/deck/role-timeline-column.vue
+++ b/packages/frontend/src/ui/deck/role-timeline-column.vue
@@ -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"/>
diff --git a/packages/frontend/src/ui/universal.vue b/packages/frontend/src/ui/universal.vue
index 14c9589a69..831f5343f9 100644
--- a/packages/frontend/src/ui/universal.vue
+++ b/packages/frontend/src/ui/universal.vue
@@ -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);
diff --git a/packages/frontend/src/ui/visitor.vue b/packages/frontend/src/ui/visitor.vue
index e9074e7ec0..3a5dbeb186 100644
--- a/packages/frontend/src/ui/visitor.vue
+++ b/packages/frontend/src/ui/visitor.vue
@@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<div v-else-if="narrow === true" class="narrow">
<button class="menu _button" @click="showMenu = true">
- <i class="ph-list ph-bold ph-lg-2 icon"></i>
+ <i class="ti ti-menu-2 icon"></i>
</button>
</div>
</div>
@@ -50,10 +50,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkA to="/" class="link" activeClass="active"><i class="ti ti-home icon"></i>{{ i18n.ts.home }}</MkA>
<MkA v-if="isTimelineAvailable" to="/timeline" class="link" activeClass="active"><i class="ph-chat-text ph-bold ph-lg icon"></i>{{ i18n.ts.timeline }}</MkA>
<MkA to="/explore" class="link" activeClass="active"><i class="ti ti-hash icon"></i>{{ i18n.ts.explore }}</MkA>
- <MkA to="/announcements" class="link" activeClass="active"><i class="ph-megaphone ph-bold ph-lg icon"></i>{{ i18n.ts.announcements }}</MkA>
+ <MkA to="/announcements" class="link" activeClass="active"><i class="ti ti-speakerphone icon"></i>{{ i18n.ts.announcements }}</MkA>
<MkA to="/channels" class="link" activeClass="active"><i class="ti ti-device-tv icon"></i>{{ i18n.ts.channel }}</MkA>
<div class="divider"></div>
- <MkA to="/pages" class="link" activeClass="active"><i class="ph-newspaper ph-bold ph-lg icon"></i>{{ i18n.ts.pages }}</MkA>
+ <MkA to="/pages" class="link" activeClass="active"><i class="ti ti-news icon"></i>{{ i18n.ts.pages }}</MkA>
<MkA to="/play" class="link" activeClass="active"><i class="ti ti-player-play icon"></i>Play</MkA>
<MkA to="/gallery" class="link" activeClass="active"><i class="ph-images-square ph-bold ph-lgs icon"></i>{{ i18n.ts.gallery }}</MkA>
<div class="action">
diff --git a/packages/frontend/src/widgets/WidgetTimeline.vue b/packages/frontend/src/widgets/WidgetTimeline.vue
index 51201f9703..4e77795a30 100644
--- a/packages/frontend/src/widgets/WidgetTimeline.vue
+++ b/packages/frontend/src/widgets/WidgetTimeline.vue
@@ -11,8 +11,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<i v-else-if="widgetProps.src === 'social'" class="ph-rocket-launch ph-bold ph-lg"></i>
<i v-else-if="widgetProps.src === 'bubble'" class="ph-drop ph-bold ph-lg"></i>
<i v-else-if="widgetProps.src === 'global'" class="ph-globe-hemisphere-west ph-bold ph-lg"></i>
- <i v-else-if="widgetProps.src === 'list'" class="ph-list ph-bold ph-lg"></i>
- <i v-else-if="widgetProps.src === 'antenna'" class="ph-flying-saucer ph-bold ph-lg"></i>
+ <i v-else-if="widgetProps.src === 'list'" class="ti ti-list"></i>
+ <i v-else-if="widgetProps.src === 'antenna'" class="ti ti-antenna"></i>
</template>
<template #header>
<button class="_button" @click="choose">
@@ -103,7 +103,7 @@ const choose = async (ev) => {
]);
const antennaItems = antennas.map(antenna => ({
text: antenna.name,
- icon: 'ph-flying-saucer ph-bold ph-lg',
+ icon: 'ti ti-antenna',
action: () => {
widgetProps.antenna = antenna;
setSrc('antenna');
@@ -111,7 +111,7 @@ const choose = async (ev) => {
}));
const listItems = lists.map(list => ({
text: list.name,
- icon: 'ph-list ph-bold ph-lg',
+ icon: 'ti ti-list',
action: () => {
widgetProps.list = list;
setSrc('list');
diff --git a/packages/frontend/src/widgets/server-metric/disk.vue b/packages/frontend/src/widgets/server-metric/disk.vue
index e94a8b6848..0602b8cd27 100644
--- a/packages/frontend/src/widgets/server-metric/disk.vue
+++ b/packages/frontend/src/widgets/server-metric/disk.vue
@@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="zbwaqsat">
<XPie class="pie" :value="usage"/>
<div>
- <p><i class="ph-database ph-bold ph-lg"></i>Disk</p>
+ <p><i class="ti ti-database"></i>Disk</p>
<p>Total: {{ bytes(total, 1) }}</p>
<p>Free: {{ bytes(available, 1) }}</p>
<p>Used: {{ bytes(used, 1) }}</p>
diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts
index 97ec8927ae..700892fa94 100644
--- a/packages/frontend/vite.config.ts
+++ b/packages/frontend/vite.config.ts
@@ -186,7 +186,6 @@ export function getConfig(): UserConfig {
'ti ti-plus': 'ph-plus ph-bold ph-lg',
'ti ti-planet': 'ph-planet ph-bold ph-lg',
'ti ti-world-x': 'ph-planet ph-bold ph-lg',
- 'ti ti-world-search': 'ph-planet ph-bold ph-lg',
'ti ti-chevron-right': 'ph-caret-right ph-bold ph-lg',
'ti ti-chevrons-right': 'ph-caret-right ph-bold ph-lg',
'ti ti-dots': 'ph-dots-three ph-bold ph-lg',
@@ -276,6 +275,61 @@ export function getConfig(): UserConfig {
'ti ti-arrow-back-up': 'ph-arrow-u-up-left ph-bold ph-lg',
'ti ti-quote': 'ph-quotes ph-bold ph-lg',
'ti ti-send': 'ph-paper-plane-tilt ph-bold ph-lg',
+ 'ti ti-speakerphone': 'ph-megaphone ph-bold ph-lg',
+ 'ti ti-bolt': 'ph-lightning ph-bold ph-lg',
+ 'ti ti-mail': 'ph-envelope ph-bold ph-lg',
+ 'ti ti-paperclip': 'ph-paperclip ph-bold ph-lg',
+ 'ti ti-ban': 'ph-prohibit ph-bold ph-lg',
+ 'ti ti-chevron-double-right': 'ph-caret-double-right ph-bold ph-lg',
+ 'ti ti-at': 'ph-at ph-bold ph-lg',
+ 'ti ti-chart-arrows': 'ph-chart-bar-horizontal ph-bold ph-lg',
+ 'ti ti-medal': 'ph-trophy ph-bold ph-lg',
+ 'ti ti-trophy': 'ph-trophy ph-bold ph-lg',
+ 'ti ti-badges': 'ph-seal-check ph-bold ph-lg',
+ 'ti ti-badge': 'ph-seal-check ph-bold ph-lg',
+ 'ti ti-window-maximize': 'ph-frame-corners ph-bold ph-lg',
+ 'ti ti-password': 'ph-password ph-bold ph-lg',
+ 'ti ti-key': 'ph-key ph-bold ph-lg',
+ 'ti ti-123': 'ph-numpad ph-bold ph-lg',
+ 'ti ti-world': 'ph-globe-hemisphere-west ph-bold ph-lg',
+ 'ti ti-plug': 'ph-plug ph-bold ph-lg',
+ 'ti ti-palette': 'ph-palette ph-bold ph-lg',
+ 'ti ti-text-caption': 'ph-text-indent ph-bold ph-lg',
+ 'ti ti-crop': 'ph-crop ph-bold ph-lg',
+ 'ti ti-crown': 'ph-crown ph-bold ph-lg',
+ 'ti ti-user': 'ph-user ph-bold ph-lg',
+ 'ti ti-brand-x': 'ph-twitter-logo ph-bold ph-lg',
+ 'ti ti-picture-in-picture': 'ph-picture-in-picture ph-bold ph-lg',
+ 'ti ti-user-edit': 'ph-user-list ph-bold ph-lg',
+ 'ti ti-user-plus': 'ph-user-plus ph-bold ph-lg',
+ 'ti ti-bell-plus': 'ph-bell-ringing ph-bold ph-lg',
+ 'ti ti-bell-ringing-2': 'ph-bell-ringing ph-bold ph-lg',
+ 'ti ti-maximize': 'ph-frame-corners ph-bold ph-lg',
+ 'ti ti-minimize': 'ph-arrows-in-simple ph-bold ph-lg',
+ 'ti ti-rectangle': 'ph-frame-corners ph-bold ph-lg',
+ 'icon ti ti-brand-youtube': 'icon ph-youtube-logo ph-bold ph-lg',
+ 'ti ti-snowflake': 'ph-snowflake ph-bold ph-lg',
+ 'ti ti-feather': 'ph-feather ph-bold ph-lg',
+ 'ti ti-dice-5': 'ph ph-dice-5 ph-bold ph-lg',
+ 'ti ti-world-search': 'ph-binoculars ph-bold ph-lg',
+ 'ti ti-list': 'ph-list ph-bold ph-lg',
+ 'ti ti-antenna': 'ph-flying-saucer ph-bold ph-lg',
+ 'ti ti-news': 'ph-newspaper ph-bold ph-lg',
+ 'ti ti-device-gamepad': 'ph-game-controller ph-bold ph-lg',
+ 'ti ti-devices': 'ph-devices ph-bold ph-lg',
+ 'ti ti-user-shield': 'ph-newspaper-clipping ph-bold ph-lg',
+ 'ti ti-checkup-list': 'ph-list-checks ph-bold ph-lg',
+ 'ti ti-license': 'ph-notebook ph-bold ph-lg',
+ 'ti ti-notebook': 'ph-notebook ph-bold ph-lg',
+ 'ti ti-message': 'ph-envelope ph-bold ph-lg',
+ 'ti ti-messages': 'ph-envelope ph-bold ph-lg',
+ 'ti ti-user-circle': 'ph-user-circle ph-bold ph-lg',
+ 'ti ti-menu-2': 'ph-list ph-bold ph-lg',
+ 'ti ti-menu': 'ph-list ph-bold ph-lg',
+ 'ti ti-ad': 'ph-flag ph-bold ph-lg',
+ 'ti ti-paint': 'ph-paint-roller ph-bold ph-lg',
+ 'ti ti-database': 'ph-database ph-bold ph-lg',
+
},
}),
...process.env.NODE_ENV === 'production'