Merge branch 'icons' of https://github.com/transfem-org/Sharkey into icons

This commit is contained in:
Mar0xy 2023-10-01 00:52:07 +02:00
commit 8d4e99b3a9
No known key found for this signature in database
GPG Key ID: 56569BBE47D2C828
91 changed files with 190 additions and 190 deletions

View File

@ -60,7 +60,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-show="appearNote.cw == null || showContent" :class="[{ [$style.contentCollapsed]: collapsed }]" > <div v-show="appearNote.cw == null || showContent" :class="[{ [$style.contentCollapsed]: collapsed }]" >
<div :class="$style.text"> <div :class="$style.text">
<span v-if="appearNote.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span> <span v-if="appearNote.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span>
<MkA v-if="appearNote.replyId" :class="$style.replyIcon" :to="`/notes/${appearNote.replyId}`"><i class="ph-arrow-u-up-left ph-bold pg-lg"></i></MkA> <MkA v-if="appearNote.replyId" :class="$style.replyIcon" :to="`/notes/${appearNote.replyId}`"><i class="ph-arrow-bend-left-up ph-bold pg-lg"></i></MkA>
<Mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$i" :emojiUrls="appearNote.emojis"/> <Mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$i" :emojiUrls="appearNote.emojis"/>
<div v-if="translating || translation" :class="$style.translation"> <div v-if="translating || translation" :class="$style.translation">
<MkLoading v-if="translating" mini/> <MkLoading v-if="translating" mini/>

View File

@ -73,7 +73,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</p> </p>
<div v-show="appearNote.cw == null || showContent"> <div v-show="appearNote.cw == null || showContent">
<span v-if="appearNote.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span> <span v-if="appearNote.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span>
<MkA v-if="appearNote.replyId" :class="$style.noteReplyTarget" :to="`/notes/${appearNote.replyId}`"><i class="ph-arrow-u-up-left ph-bold pg-lg"></i></MkA> <MkA v-if="appearNote.replyId" :class="$style.noteReplyTarget" :to="`/notes/${appearNote.replyId}`"><i class="ph-arrow-bend-left-up ph-bold pg-lg"></i></MkA>
<Mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$i" :emojiUrls="appearNote.emojis"/> <Mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$i" :emojiUrls="appearNote.emojis"/>
<a v-if="appearNote.renote != null" :class="$style.rn">RN:</a> <a v-if="appearNote.renote != null" :class="$style.rn">RN:</a>
<div v-if="translating || translation" :class="$style.translation"> <div v-if="translating || translation" :class="$style.translation">

View File

@ -55,7 +55,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"/> <MkNoteSub v-for="reply in replies" :key="reply.id" :note="reply" :class="$style.reply" :detail="true" :depth="depth + 1"/>
</template> </template>
<div v-else :class="$style.more"> <div v-else :class="$style.more">
<MkA class="_link" :to="notePage(note)">{{ i18n.ts.continueThread }} <i class="ti ti-chevron-double-right"></i></MkA> <MkA class="_link" :to="notePage(note)">{{ i18n.ts.continueThread }} <i class="ph-caret-double-right ph-bold ph-lg"></i></MkA>
</div> </div>
</div> </div>
<div v-else :class="$style.muted" @click="muted = false"> <div v-else :class="$style.muted" @click="muted = false">

View File

@ -32,7 +32,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<i v-else-if="notification.type === 'reply'" class="ph-arrow-u-up-left ph-bold pg-lg"></i> <i v-else-if="notification.type === 'reply'" class="ph-arrow-u-up-left ph-bold pg-lg"></i>
<i v-else-if="notification.type === 'mention'" class="ph-at ph-bold ph-lg"></i> <i v-else-if="notification.type === 'mention'" class="ph-at ph-bold ph-lg"></i>
<i v-else-if="notification.type === 'quote'" class="ph-quotes ph-bold ph-lg"></i> <i v-else-if="notification.type === 'quote'" class="ph-quotes ph-bold ph-lg"></i>
<i v-else-if="notification.type === 'pollEnded'" class="ti ti-chart-arrows"></i> <i v-else-if="notification.type === 'pollEnded'" class="ph-chart-bar-horizontal ph-bold pg-lg"></i>
<i v-else-if="notification.type === 'achievementEarned'" class="ph-trophy ph-bold ph-lg"></i> <i v-else-if="notification.type === 'achievementEarned'" class="ph-trophy ph-bold ph-lg"></i>
<!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 --> <!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 -->
<MkReactionIcon <MkReactionIcon

View File

@ -66,7 +66,7 @@ const buttonsLeft = $computed(() => {
if (history.length > 1) { if (history.length > 1) {
buttons.push({ buttons.push({
icon: 'ti ti-arrow-left', icon: 'ph-arrow-left ph-bold pg-lg',
onClick: back, onClick: back,
}); });
} }
@ -79,7 +79,7 @@ const buttonsRight = $computed(() => {
title: i18n.ts.reload, title: i18n.ts.reload,
onClick: reload, onClick: reload,
}, { }, {
icon: 'ti ti-player-eject', icon: 'ph-eject ph-bold pg-lg',
title: i18n.ts.showInPage, title: i18n.ts.showInPage,
onClick: expand, onClick: expand,
}]; }];
@ -101,11 +101,11 @@ provide('shouldHeaderThin', true);
provide('forceSpacerMin', true); provide('forceSpacerMin', true);
const contextmenu = $computed(() => ([{ const contextmenu = $computed(() => ([{
icon: 'ti ti-player-eject', icon: 'ph-eject ph-bold pg-lg',
text: i18n.ts.showInPage, text: i18n.ts.showInPage,
action: expand, action: expand,
}, { }, {
icon: 'ti ti-window-maximize', icon: 'ph-frame-corners ph-bold ph-lg',
text: i18n.ts.popout, text: i18n.ts.popout,
action: popout, action: popout,
}, { }, {

View File

@ -79,11 +79,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<footer :class="$style.footer"> <footer :class="$style.footer">
<div :class="$style.footerLeft"> <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.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="ti ti-chart-arrows"></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 pg-lg"></i></button>
<button v-tooltip="i18n.ts.useCw" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: useCw }]" @click="useCw = !useCw"><i class="ph-eye-slash ph-bold ph-lg"></i></button> <button v-tooltip="i18n.ts.useCw" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: useCw }]" @click="useCw = !useCw"><i class="ph-eye-slash ph-bold ph-lg"></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="ph-at ph-bold ph-lg"></i></button>
<button v-tooltip="i18n.ts.hashtags" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: withHashtags }]" @click="withHashtags = !withHashtags"><i class="ph-hash ph-bold ph-lg"></i></button> <button v-tooltip="i18n.ts.hashtags" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: withHashtags }]" @click="withHashtags = !withHashtags"><i class="ph-hash ph-bold ph-lg"></i></button>
<button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugin" class="_button" :class="$style.footerButton" @click="showActions"><i class="ti ti-plug"></i></button> <button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugin" class="_button" :class="$style.footerButton" @click="showActions"><i class="ph-plug ph-bold ph-lg"></i></button>
<button v-tooltip="i18n.ts.emoji" :class="['_button', $style.footerButton]" @click="insertEmoji"><i class="ph-smiley ph-bold ph-lg"></i></button> <button v-tooltip="i18n.ts.emoji" :class="['_button', $style.footerButton]" @click="insertEmoji"><i class="ph-smiley ph-bold ph-lg"></i></button>
</div> </div>
<div :class="$style.footerRight"> <div :class="$style.footerRight">

View File

@ -52,7 +52,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="_buttonsCenter"> <div class="_buttonsCenter">
<MkButton inline rounded @click="emit('cancel')">{{ i18n.ts.cancel }}</MkButton> <MkButton inline rounded @click="emit('cancel')">{{ i18n.ts.cancel }}</MkButton>
<MkButton inline primary rounded gradate :disabled="!agreed" data-cy-signup-rules-continue @click="emit('done')">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton inline primary rounded gradate :disabled="!agreed" data-cy-signup-rules-continue @click="emit('done')">{{ i18n.ts.continue }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
</div> </div>
</div> </div>
</MkSpacer> </MkSpacer>

View File

@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div @click="noteclick(note.id)"> <div @click="noteclick(note.id)">
<span v-if="note.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span> <span v-if="note.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span>
<span v-if="note.deletedAt" style="opacity: 0.5">({{ i18n.ts.deleted }})</span> <span v-if="note.deletedAt" style="opacity: 0.5">({{ i18n.ts.deleted }})</span>
<MkA v-if="note.replyId" :class="$style.reply" :to="`/notes/${note.replyId}`" v-on:click.stop><i class="ph-arrow-u-up-left ph-bold pg-lg"></i></MkA> <MkA v-if="note.replyId" :class="$style.reply" :to="`/notes/${note.replyId}`" v-on:click.stop><i class="ph-arrow-bend-left-up ph-bold pg-lg"></i></MkA>
<Mfm v-if="note.text" :text="note.text" :author="note.user" :i="$i" :emojiUrls="note.emojis"/> <Mfm v-if="note.text" :text="note.text" :author="note.user" :i="$i" :emojiUrls="note.emojis"/>
<MkA v-if="note.renoteId" :class="$style.rp" :to="`/notes/${note.renoteId}`" v-on:click.stop>RN: ...</MkA> <MkA v-if="note.renoteId" :class="$style.rp" :to="`/notes/${note.renoteId}`" v-on:click.stop>RN: ...</MkA>
</div> </div>

View File

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

View File

@ -35,10 +35,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkAnimBg style="position: absolute; top: 0;" :scale="1.5"/> <MkAnimBg style="position: absolute; top: 0;" :scale="1.5"/>
<MkSpacer :marginMin="20" :marginMax="28"> <MkSpacer :marginMin="20" :marginMax="28">
<div class="_gaps" style="text-align: center;"> <div class="_gaps" style="text-align: center;">
<i class="ti ti-confetti" style="display: block; margin: auto; font-size: 3em; color: var(--accent);"></i> <i class="ph-confetti ph-bold ph-lg" style="display: block; margin: auto; font-size: 3em; color: var(--accent);"></i>
<div style="font-size: 120%;">{{ i18n.ts._initialAccountSetting.accountCreated }}</div> <div style="font-size: 120%;">{{ i18n.ts._initialAccountSetting.accountCreated }}</div>
<div>{{ i18n.ts._initialAccountSetting.letsStartAccountSetup }}</div> <div>{{ i18n.ts._initialAccountSetting.letsStartAccountSetup }}</div>
<MkButton primary rounded gradate style="margin: 16px auto 0 auto;" data-cy-user-setup-continue @click="page++">{{ i18n.ts._initialAccountSetting.profileSetting }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton primary rounded gradate style="margin: 16px auto 0 auto;" data-cy-user-setup-continue @click="page++">{{ i18n.ts._initialAccountSetting.profileSetting }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
<MkButton style="margin: 0 auto;" transparent rounded @click="later(true)">{{ i18n.ts.later }}</MkButton> <MkButton style="margin: 0 auto;" transparent rounded @click="later(true)">{{ i18n.ts.later }}</MkButton>
</div> </div>
</MkSpacer> </MkSpacer>
@ -49,8 +49,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSpacer :marginMin="20" :marginMax="28"> <MkSpacer :marginMin="20" :marginMax="28">
<XProfile/> <XProfile/>
<div class="_buttonsCenter" style="margin-top: 16px;"> <div class="_buttonsCenter" style="margin-top: 16px;">
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton> <MkButton rounded data-cy-user-setup-back @click="page--"><i class="ph-arrow-left ph-bold pg-lg"></i> {{ i18n.ts.goBack }}</MkButton>
<MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
</div> </div>
</MkSpacer> </MkSpacer>
</div> </div>
@ -60,8 +60,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSpacer :marginMin="20" :marginMax="28"> <MkSpacer :marginMin="20" :marginMax="28">
<XPrivacy/> <XPrivacy/>
<div class="_buttonsCenter" style="margin-top: 16px;"> <div class="_buttonsCenter" style="margin-top: 16px;">
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton> <MkButton rounded data-cy-user-setup-back @click="page--"><i class="ph-arrow-left ph-bold pg-lg"></i> {{ i18n.ts.goBack }}</MkButton>
<MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
</div> </div>
</MkSpacer> </MkSpacer>
</div> </div>
@ -73,8 +73,8 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkSpacer> </MkSpacer>
<div :class="$style.pageFooter"> <div :class="$style.pageFooter">
<div class="_buttonsCenter"> <div class="_buttonsCenter">
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton> <MkButton rounded data-cy-user-setup-back @click="page--"><i class="ph-arrow-left ph-bold pg-lg"></i> {{ i18n.ts.goBack }}</MkButton>
<MkButton primary rounded gradate style="" data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton primary rounded gradate style="" data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
</div> </div>
</div> </div>
</div> </div>
@ -88,8 +88,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<div style="padding: 0 16px;">{{ i18n.t('_initialAccountSetting.pushNotificationDescription', { name: instance.name ?? host }) }}</div> <div style="padding: 0 16px;">{{ i18n.t('_initialAccountSetting.pushNotificationDescription', { name: instance.name ?? host }) }}</div>
<MkPushNotificationAllowButton primary showOnlyToRegister style="margin: 0 auto;"/> <MkPushNotificationAllowButton primary showOnlyToRegister style="margin: 0 auto;"/>
<div class="_buttonsCenter" style="margin-top: 16px;"> <div class="_buttonsCenter" style="margin-top: 16px;">
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton> <MkButton rounded data-cy-user-setup-back @click="page--"><i class="ph-arrow-left ph-bold pg-lg"></i> {{ i18n.ts.goBack }}</MkButton>
<MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
</div> </div>
</div> </div>
</MkSpacer> </MkSpacer>
@ -110,7 +110,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</I18n> </I18n>
<div>{{ i18n.t('_initialAccountSetting.haveFun', { name: instance.name ?? host }) }}</div> <div>{{ i18n.t('_initialAccountSetting.haveFun', { name: instance.name ?? host }) }}</div>
<div class="_buttonsCenter" style="margin-top: 16px;"> <div class="_buttonsCenter" style="margin-top: 16px;">
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton> <MkButton rounded data-cy-user-setup-back @click="page--"><i class="ph-arrow-left ph-bold pg-lg"></i> {{ i18n.ts.goBack }}</MkButton>
<MkButton primary rounded gradate data-cy-user-setup-continue @click="close(false)">{{ i18n.ts.close }}</MkButton> <MkButton primary rounded gradate data-cy-user-setup-continue @click="close(false)">{{ i18n.ts.close }}</MkButton>
</div> </div>
</div> </div>

View File

@ -27,10 +27,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-if="!minimized"> <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> <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> </template>
<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-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="ti ti-minimize"></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="ti ti-picture-in-picture"></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="ti ti-rectangle"></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="closeButton" v-tooltip="i18n.ts.close" class="_button" :class="$style.headerButton" @click="close()"><i class="ph-x ph-bold ph-lg"></i></button> <button v-if="closeButton" v-tooltip="i18n.ts.close" class="_button" :class="$style.headerButton" @click="close()"><i class="ph-x ph-bold ph-lg"></i></button>
</span> </span>
</div> </div>

View File

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

View File

@ -51,7 +51,7 @@ function onContextmenu(ev) {
os.pageWindow(props.to); os.pageWindow(props.to);
}, },
}, { }, {
icon: 'ti ti-player-eject', icon: 'ph-eject ph-bold pg-lg',
text: i18n.ts.showInPage, text: i18n.ts.showInPage,
action: () => { action: () => {
router.push(props.to, 'forcePage'); router.push(props.to, 'forcePage');

View File

@ -152,7 +152,7 @@ const headerTabs = $computed(() => [{
}, { }, {
key: 'charts', key: 'charts',
title: i18n.ts.charts, title: i18n.ts.charts,
icon: 'ti ti-chart-line', icon: 'ph-chart-line ph-bold pg-lg',
}]); }]);
definePageMetadata(computed(() => ({ definePageMetadata(computed(() => ({

View File

@ -100,7 +100,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
<MkFolder> <MkFolder>
<template #icon><i class="ti ti-license"></i></template> <template #icon><i class="ph-scroll ph-bold ph-lg"></i></template>
<template #label>{{ i18n.ts._role.policies }}</template> <template #label>{{ i18n.ts._role.policies }}</template>
<div class="_gaps"> <div class="_gaps">
<div v-for="policy in Object.keys(info.policies)" :key="policy"> <div v-for="policy in Object.keys(info.policies)" :key="policy">
@ -468,7 +468,7 @@ const headerTabs = $computed(() => [{
}, { }, {
key: 'chart', key: 'chart',
title: i18n.ts.charts, title: i18n.ts.charts,
icon: 'ti ti-chart-line', icon: 'ph-chart-line ph-bold pg-lg',
}, { }, {
key: 'raw', key: 'raw',
title: 'Raw', title: 'Raw',

View File

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

View File

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

View File

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

View File

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

View File

@ -136,12 +136,12 @@ const menuDef = $computed(() => [{
to: '/admin/announcements', to: '/admin/announcements',
active: currentPage?.route.name === 'announcements', active: currentPage?.route.name === 'announcements',
}, { }, {
icon: 'ti ti-ad', icon: 'ph-flag ph-bold ph-lg',
text: i18n.ts.ads, text: i18n.ts.ads,
to: '/admin/ads', to: '/admin/ads',
active: currentPage?.route.name === 'ads', active: currentPage?.route.name === 'ads',
}, { }, {
icon: 'ti ti-exclamation-circle', icon: 'ph-warning-circle ph-bold ph-lg',
text: i18n.ts.abuseReports, text: i18n.ts.abuseReports,
to: '/admin/abuses', to: '/admin/abuses',
active: currentPage?.route.name === 'abuses', active: currentPage?.route.name === 'abuses',
@ -159,7 +159,7 @@ const menuDef = $computed(() => [{
to: '/admin/settings', to: '/admin/settings',
active: currentPage?.route.name === 'settings', active: currentPage?.route.name === 'settings',
}, { }, {
icon: 'ti ti-paint', icon: 'ph-paint-roller ph-bold ph-lg',
text: i18n.ts.branding, text: i18n.ts.branding,
to: '/admin/branding', to: '/admin/branding',
active: currentPage?.route.name === 'branding', active: currentPage?.route.name === 'branding',
@ -194,7 +194,7 @@ const menuDef = $computed(() => [{
to: '/admin/instance-block', to: '/admin/instance-block',
active: currentPage?.route.name === 'instance-block', active: currentPage?.route.name === 'instance-block',
}, { }, {
icon: 'ti ti-ghost', icon: 'ph-ghost ph-bold ph-lg',
text: i18n.ts.proxyAccount, text: i18n.ts.proxyAccount,
to: '/admin/proxy-account', to: '/admin/proxy-account',
active: currentPage?.route.name === 'proxy-account', active: currentPage?.route.name === 'proxy-account',

View File

@ -47,7 +47,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
</div> </div>
<div class="item _panel online"> <div class="item _panel online">
<div class="icon"><i class="ti ti-access-point"></i></div> <div class="icon"><i class="ph-broadcast ph-bold ph-lg"></i></div>
<div class="body"> <div class="body">
<div class="value"> <div class="value">
<MkNumber :value="onlineUsersCount" style="margin-right: 0.5em;"/> <MkNumber :value="onlineUsersCount" style="margin-right: 0.5em;"/>

View File

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

View File

@ -73,7 +73,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkSwitch> </MkSwitch>
<FormSlot> <FormSlot>
<template #label><i class="ti ti-license"></i> {{ i18n.ts._role.policies }}</template> <template #label><i class="ph-scroll ph-bold ph-lg"></i> {{ i18n.ts._role.policies }}</template>
<div class="_gaps_s"> <div class="_gaps_s">
<MkInput v-model="q" type="search"> <MkInput v-model="q" type="search">
<template #prefix><i class="ph-magnifying-glass ph-bold ph-lg"></i></template> <template #prefix><i class="ph-magnifying-glass ph-bold ph-lg"></i></template>
@ -546,9 +546,9 @@ let rolePermission = $computed({
let q = $ref(''); let q = $ref('');
function getPriorityIcon(option) { function getPriorityIcon(option) {
if (option.priority === 2) return 'ti ti-arrows-up'; if (option.priority === 2) return 'ph-arrow-up ph-bold ph-lg';
if (option.priority === 1) return 'ti ti-arrow-narrow-up'; if (option.priority === 1) return 'ph-arrow-up ph-bold ph-lg';
return 'ph-dot-outline ph-bold pg-lg'; return 'ph-circle ph-bold pg-lg';
} }
function matchQuery(keywords: string[]): boolean { function matchQuery(keywords: string[]): boolean {

View File

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

View File

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

View File

@ -99,7 +99,7 @@ const headerTabs = $computed(() => [{
}, { }, {
key: 'past', key: 'past',
title: i18n.ts.pastAnnouncements, title: i18n.ts.pastAnnouncements,
icon: 'ph-dot-outline ph-bold pg-lg', icon: 'ph-circle ph-bold pg-lg',
}]); }]);
definePageMetadata({ definePageMetadata({

View File

@ -78,7 +78,7 @@ watch(() => props.antennaId, async () => {
}, { immediate: true }); }, { immediate: true });
const headerActions = $computed(() => antenna ? [{ const headerActions = $computed(() => antenna ? [{
icon: 'ti ti-calendar-time', icon: 'ph-calendar ph-bold ph-lg',
text: i18n.ts.jumpToSpecifiedDate, text: i18n.ts.jumpToSpecifiedDate,
handler: timetravel, handler: timetravel,
}, { }, {

View File

@ -89,6 +89,6 @@ const headerTabs = $computed(() => []);
definePageMetadata({ definePageMetadata({
title: 'API console', title: 'API console',
icon: 'ti ti-terminal-2', icon: 'ph-terminal-window ph-bold ph-lg-2',
}); });
</script> </script>

View File

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

View File

@ -134,7 +134,7 @@ const headerTabs = $computed(() => [{
}, { }, {
key: 'featured', key: 'featured',
title: i18n.ts._channel.featured, title: i18n.ts._channel.featured,
icon: 'ti ti-comet', icon: 'ph-shooting-star ph-bold ph-lg',
}, { }, {
key: 'favorites', key: 'favorites',
title: i18n.ts.favorites, title: i18n.ts.favorites,

View File

@ -12,15 +12,15 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-if="origin === 'local'"> <div v-if="origin === 'local'">
<template v-if="tag == null"> <template v-if="tag == null">
<MkFoldableSection class="_margin" persistKey="explore-pinned-users"> <MkFoldableSection class="_margin" persistKey="explore-pinned-users">
<template #header><i class="ti ti-bookmark ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.pinnedUsers }}</template> <template #header><i class="ph-bookmark ph-bold ph-lg ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.pinnedUsers }}</template>
<MkUserList :pagination="pinnedUsers"/> <MkUserList :pagination="pinnedUsers"/>
</MkFoldableSection> </MkFoldableSection>
<MkFoldableSection class="_margin" persistKey="explore-popular-users"> <MkFoldableSection class="_margin" persistKey="explore-popular-users">
<template #header><i class="ti ti-chart-line ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.popularUsers }}</template> <template #header><i class="ph-chart-line ph-bold pg-lg ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.popularUsers }}</template>
<MkUserList :pagination="popularUsers"/> <MkUserList :pagination="popularUsers"/>
</MkFoldableSection> </MkFoldableSection>
<MkFoldableSection class="_margin" persistKey="explore-recently-updated-users"> <MkFoldableSection class="_margin" persistKey="explore-recently-updated-users">
<template #header><i class="ti ti-message ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyUpdatedUsers }}</template> <template #header><i class="ph-chat-text ph-bold ph-lg ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyUpdatedUsers }}</template>
<MkUserList :pagination="recentlyUpdatedUsers"/> <MkUserList :pagination="recentlyUpdatedUsers"/>
</MkFoldableSection> </MkFoldableSection>
<MkFoldableSection class="_margin" persistKey="explore-recently-registered-users"> <MkFoldableSection class="_margin" persistKey="explore-recently-registered-users">
@ -46,11 +46,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-if="tag == null"> <template v-if="tag == null">
<MkFoldableSection class="_margin"> <MkFoldableSection class="_margin">
<template #header><i class="ti ti-chart-line ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.popularUsers }}</template> <template #header><i class="ph-chart-line ph-bold pg-lg ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.popularUsers }}</template>
<MkUserList :pagination="popularUsersF"/> <MkUserList :pagination="popularUsersF"/>
</MkFoldableSection> </MkFoldableSection>
<MkFoldableSection class="_margin"> <MkFoldableSection class="_margin">
<template #header><i class="ti ti-message ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyUpdatedUsers }}</template> <template #header><i class="ph-chat-text ph-bold ph-lg ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyUpdatedUsers }}</template>
<MkUserList :pagination="recentlyUpdatedUsersF"/> <MkUserList :pagination="recentlyUpdatedUsersF"/>
</MkFoldableSection> </MkFoldableSection>
<MkFoldableSection class="_margin"> <MkFoldableSection class="_margin">

View File

@ -89,6 +89,6 @@ const headerTabs = $computed(() => [{
definePageMetadata(computed(() => ({ definePageMetadata(computed(() => ({
title: 'Play', title: 'Play',
icon: 'ti ti-player-play', icon: 'ph-play ph-bold pg-lg',
}))); })));
</script> </script>

View File

@ -18,7 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkPagination> </MkPagination>
</MkFoldableSection> </MkFoldableSection>
<MkFoldableSection class="_margin"> <MkFoldableSection class="_margin">
<template #header><i class="ti ti-comet"></i>{{ i18n.ts.popularPosts }}</template> <template #header><i class="ph-shooting-star ph-bold ph-lg"></i>{{ i18n.ts.popularPosts }}</template>
<MkPagination v-slot="{items}" :pagination="popularPostsPagination" :disableAutoLoad="true"> <MkPagination v-slot="{items}" :pagination="popularPostsPagination" :disableAutoLoad="true">
<div :class="$style.items"> <div :class="$style.items">
<MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/> <MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/>

View File

@ -216,7 +216,7 @@ const headerTabs = $computed(() => [{
}, { }, {
key: 'chart', key: 'chart',
title: i18n.ts.charts, title: i18n.ts.charts,
icon: 'ti ti-chart-line', icon: 'ph-chart-line ph-bold pg-lg',
}, { }, {
key: 'users', key: 'users',
title: i18n.ts.users, title: i18n.ts.users,
@ -229,7 +229,7 @@ const headerTabs = $computed(() => [{
definePageMetadata({ definePageMetadata({
title: props.host, title: props.host,
icon: 'ti ti-server', icon: 'ph-hard-drives ph-bold ph-lg',
}); });
</script> </script>

View File

@ -65,7 +65,7 @@ function setFilter(ev) {
const headerActions = $computed(() => [tab === 'all' ? { const headerActions = $computed(() => [tab === 'all' ? {
text: i18n.ts.filter, text: i18n.ts.filter,
icon: 'ti ti-filter', icon: 'ph-funnel ph-bold ph-lg',
highlighted: includeTypes != null, highlighted: includeTypes != null,
handler: setFilter, handler: setFilter,
} : undefined, tab === 'all' ? { } : undefined, tab === 'all' ? {
@ -79,7 +79,7 @@ const headerActions = $computed(() => [tab === 'all' ? {
const headerTabs = $computed(() => [{ const headerTabs = $computed(() => [{
key: 'all', key: 'all',
title: i18n.ts.all, title: i18n.ts.all,
icon: 'ph-dot-outline ph-bold pg-lg', icon: 'ph-circle ph-bold pg-lg',
}, { }, {
key: 'mentions', key: 'mentions',
title: i18n.ts.mentions, title: i18n.ts.mentions,

View File

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<!-- eslint-disable vue/no-mutating-props --> <!-- eslint-disable vue/no-mutating-props -->
<XContainer :draggable="true" @remove="() => $emit('remove')"> <XContainer :draggable="true" @remove="() => $emit('remove')">
<template #header><i class="ti ti-note"></i> {{ i18n.ts._pages.blocks.note }}</template> <template #header><i class="ph-note ph-bold ph-lg"></i> {{ i18n.ts._pages.blocks.note }}</template>
<section style="padding: 0 16px 0 16px;"> <section style="padding: 0 16px 0 16px;">
<MkInput v-model="id"> <MkInput v-model="id">

View File

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<!-- eslint-disable vue/no-mutating-props --> <!-- eslint-disable vue/no-mutating-props -->
<XContainer :draggable="true" @remove="() => $emit('remove')"> <XContainer :draggable="true" @remove="() => $emit('remove')">
<template #header><i class="ti ti-note"></i> {{ props.modelValue.title }}</template> <template #header><i class="ph-note ph-bold ph-lg"></i> {{ props.modelValue.title }}</template>
<template #func> <template #func>
<button class="_button" @click="rename()"> <button class="_button" @click="rename()">
<i class="ph-pencil ph-bold ph-lg"></i> <i class="ph-pencil ph-bold ph-lg"></i>

View File

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<!-- eslint-disable vue/no-mutating-props --> <!-- eslint-disable vue/no-mutating-props -->
<XContainer :draggable="true" @remove="() => $emit('remove')"> <XContainer :draggable="true" @remove="() => $emit('remove')">
<template #header><i class="ti ti-align-left"></i> {{ i18n.ts._pages.blocks.text }}</template> <template #header><i class="ph-text-align-left ph-bold ph-lg"></i> {{ i18n.ts._pages.blocks.text }}</template>
<section> <section>
<textarea v-model="text" :class="$style.textarea"></textarea> <textarea v-model="text" :class="$style.textarea"></textarea>

View File

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

View File

@ -279,7 +279,7 @@ const headerTabs = $computed(() => [{
}, { }, {
key: 'contents', key: 'contents',
title: i18n.ts._pages.contents, title: i18n.ts._pages.contents,
icon: 'ti ti-note', icon: 'ph-note ph-bold ph-lg',
}]); }]);
definePageMetadata(computed(() => { definePageMetadata(computed(() => {

View File

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

View File

@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.root"> <div :class="$style.root">
<div :class="$style.editor" class="_panel"> <div :class="$style.editor" class="_panel">
<PrismEditor v-model="code" class="_monospace" :class="$style.code" :highlight="highlighter" :lineNumbers="false"/> <PrismEditor v-model="code" class="_monospace" :class="$style.code" :highlight="highlighter" :lineNumbers="false"/>
<MkButton style="position: absolute; top: 8px; right: 8px;" primary @click="run()"><i class="ti ti-player-play"></i></MkButton> <MkButton style="position: absolute; top: 8px; right: 8px;" primary @click="run()"><i class="ph-play ph-bold pg-lg"></i></MkButton>
</div> </div>
<MkContainer v-if="root && components.length > 1" :key="uiKey" :foldable="true"> <MkContainer v-if="root && components.length > 1" :key="uiKey" :foldable="true">
@ -170,7 +170,7 @@ const headerTabs = $computed(() => []);
definePageMetadata({ definePageMetadata({
title: i18n.ts.scratchpad, title: i18n.ts.scratchpad,
icon: 'ti ti-terminal-2', icon: 'ph-terminal-window ph-bold ph-lg-2',
}); });
</script> </script>

View File

@ -42,7 +42,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
<div class="_buttonsCenter" style="margin-top: 16px;"> <div class="_buttonsCenter" style="margin-top: 16px;">
<MkButton rounded @click="cancel">{{ i18n.ts.cancel }}</MkButton> <MkButton rounded @click="cancel">{{ i18n.ts.cancel }}</MkButton>
<MkButton primary rounded gradate @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton primary rounded gradate @click="page++">{{ i18n.ts.continue }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
</div> </div>
</MkSpacer> </MkSpacer>
</div> </div>
@ -56,8 +56,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<div>{{ i18n.ts._2fa.step3 }}</div> <div>{{ i18n.ts._2fa.step3 }}</div>
</div> </div>
<div class="_buttonsCenter" style="margin-top: 16px;"> <div class="_buttonsCenter" style="margin-top: 16px;">
<MkButton rounded @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton> <MkButton rounded @click="page--"><i class="ph-arrow-left ph-bold pg-lg"></i> {{ i18n.ts.goBack }}</MkButton>
<MkButton primary rounded gradate @click="tokenDone">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton primary rounded gradate @click="tokenDone">{{ i18n.ts.continue }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
</div> </div>
</MkSpacer> </MkSpacer>
</div> </div>

View File

@ -47,7 +47,7 @@ const init = async () => {
function menu(account, ev) { function menu(account, ev) {
os.popupMenu([{ os.popupMenu([{
text: i18n.ts.switch, text: i18n.ts.switch,
icon: 'ti ti-switch-horizontal', icon: 'ph-arrows-left-right ph-bold ph-lg',
action: () => switchAccount(account), action: () => switchAccount(account),
}, { }, {
text: i18n.ts.logout, text: i18n.ts.logout,

View File

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

View File

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

View File

@ -20,9 +20,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkRadios v-model="overridedDeviceKind"> <MkRadios v-model="overridedDeviceKind">
<template #label>{{ i18n.ts.overridedDeviceKind }}</template> <template #label>{{ i18n.ts.overridedDeviceKind }}</template>
<option :value="null">{{ i18n.ts.auto }}</option> <option :value="null">{{ i18n.ts.auto }}</option>
<option value="smartphone"><i class="ti ti-device-mobile"/> {{ i18n.ts.smartphone }}</option> <option value="smartphone"><i class="ph-device-mobile ph-bold ph-lg"/> {{ i18n.ts.smartphone }}</option>
<option value="tablet"><i class="ti ti-device-tablet"/> {{ i18n.ts.tablet }}</option> <option value="tablet"><i class="ph-device-tablet ph-bold ph-lg"/> {{ i18n.ts.tablet }}</option>
<option value="desktop"><i class="ti ti-device-desktop"/> {{ i18n.ts.desktop }}</option> <option value="desktop"><i class="ph-desktop ph-bold ph-lg"/> {{ i18n.ts.desktop }}</option>
</MkRadios> </MkRadios>
<FormSection> <FormSection>
@ -91,16 +91,16 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="_gaps_m"> <div class="_gaps_m">
<MkRadios v-model="notificationPosition"> <MkRadios v-model="notificationPosition">
<template #label>{{ i18n.ts.position }}</template> <template #label>{{ i18n.ts.position }}</template>
<option value="leftTop"><i class="ti ti-align-box-left-top"></i> {{ i18n.ts.leftTop }}</option> <option value="leftTop"><i class="ph-arrow-up-left ph-bold ph-lg"></i> {{ i18n.ts.leftTop }}</option>
<option value="rightTop"><i class="ti ti-align-box-right-top"></i> {{ i18n.ts.rightTop }}</option> <option value="rightTop"><i class="ph-arrow-up-right ph-bold ph-lg"></i> {{ i18n.ts.rightTop }}</option>
<option value="leftBottom"><i class="ti ti-align-box-left-bottom"></i> {{ i18n.ts.leftBottom }}</option> <option value="leftBottom"><i class="ph-arrow-down-left ph-bold ph-lg"></i> {{ i18n.ts.leftBottom }}</option>
<option value="rightBottom"><i class="ti ti-align-box-right-bottom"></i> {{ i18n.ts.rightBottom }}</option> <option value="rightBottom"><i class="ph-arrow-down-right ph-bold ph-lg"></i> {{ i18n.ts.rightBottom }}</option>
</MkRadios> </MkRadios>
<MkRadios v-model="notificationStackAxis"> <MkRadios v-model="notificationStackAxis">
<template #label>{{ i18n.ts.stackAxis }}</template> <template #label>{{ i18n.ts.stackAxis }}</template>
<option value="vertical"><i class="ti ti-carousel-vertical"></i> {{ i18n.ts.vertical }}</option> <option value="vertical"><i class="ph-split-vertical ph-bold ph-lg"></i> {{ i18n.ts.vertical }}</option>
<option value="horizontal"><i class="ti ti-carousel-horizontal"></i> {{ i18n.ts.horizontal }}</option> <option value="horizontal"><i class="ph-split-horizontal ph-bold ph-lg"></i> {{ i18n.ts.horizontal }}</option>
</MkRadios> </MkRadios>
<MkButton @click="testNotification">{{ i18n.ts._notification.checkNotificationBehavior }}</MkButton> <MkButton @click="testNotification">{{ i18n.ts._notification.checkNotificationBehavior }}</MkButton>

View File

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

View File

@ -107,17 +107,17 @@ const menuDef = computed(() => [{
to: '/settings/general', to: '/settings/general',
active: currentPage?.route.name === 'general', active: currentPage?.route.name === 'general',
}, { }, {
icon: 'ti ti-palette', icon: 'ph-palette ph-bold ph-lg',
text: i18n.ts.theme, text: i18n.ts.theme,
to: '/settings/theme', to: '/settings/theme',
active: currentPage?.route.name === 'theme', active: currentPage?.route.name === 'theme',
}, { }, {
icon: 'ti ti-menu-2', icon: 'ph-list ph-bold ph-lg-2',
text: i18n.ts.navbar, text: i18n.ts.navbar,
to: '/settings/navbar', to: '/settings/navbar',
active: currentPage?.route.name === 'navbar', active: currentPage?.route.name === 'navbar',
}, { }, {
icon: 'ti ti-equal-double', icon: 'ph-equals ph-bold ph-lg',
text: i18n.ts.statusbar, text: i18n.ts.statusbar,
to: '/settings/statusbar', to: '/settings/statusbar',
active: currentPage?.route.name === 'statusbar', active: currentPage?.route.name === 'statusbar',
@ -127,7 +127,7 @@ const menuDef = computed(() => [{
to: '/settings/sounds', to: '/settings/sounds',
active: currentPage?.route.name === 'sounds', active: currentPage?.route.name === 'sounds',
}, { }, {
icon: 'ti ti-plug', icon: 'ph-plug ph-bold ph-lg',
text: i18n.ts.plugins, text: i18n.ts.plugins,
to: '/settings/plugin', to: '/settings/plugin',
active: currentPage?.route.name === 'plugin', active: currentPage?.route.name === 'plugin',
@ -150,7 +150,7 @@ const menuDef = computed(() => [{
to: '/settings/mute-block', to: '/settings/mute-block',
active: currentPage?.route.name === 'mute-block', active: currentPage?.route.name === 'mute-block',
}, { }, {
icon: 'ti ti-message-off', icon: 'ph-bell-slash ph-bold ph-lg',
text: i18n.ts.wordMute, text: i18n.ts.wordMute,
to: '/settings/word-mute', to: '/settings/word-mute',
active: currentPage?.route.name === 'word-mute', active: currentPage?.route.name === 'word-mute',
@ -160,17 +160,17 @@ const menuDef = computed(() => [{
to: '/settings/api', to: '/settings/api',
active: currentPage?.route.name === 'api', active: currentPage?.route.name === 'api',
}, { }, {
icon: 'ti ti-webhook', icon: 'ph-webhooks-logo ph-bold ph-lg',
text: 'Webhook', text: 'Webhook',
to: '/settings/webhook', to: '/settings/webhook',
active: currentPage?.route.name === 'webhook', active: currentPage?.route.name === 'webhook',
}, { }, {
icon: 'ti ti-package', icon: 'ph-package ph-bold ph-lg',
text: i18n.ts.importAndExport, text: i18n.ts.importAndExport,
to: '/settings/import-export', to: '/settings/import-export',
active: currentPage?.route.name === 'import-export', active: currentPage?.route.name === 'import-export',
}, { }, {
icon: 'ti ti-plane', icon: 'ph-airplane ph-bold ph-lg',
text: `${i18n.ts.accountMigration}`, text: `${i18n.ts.accountMigration}`,
to: '/settings/migration', to: '/settings/migration',
active: currentPage?.route.name === 'migration', active: currentPage?.route.name === 'migration',
@ -201,7 +201,7 @@ const menuDef = computed(() => [{
}, },
}, { }, {
type: 'button', type: 'button',
icon: 'ti ti-power', icon: 'ph-power ph-bold ph-lg',
text: i18n.ts.logout, text: i18n.ts.logout,
action: async () => { action: async () => {
const { canceled } = await os.confirm({ const { canceled } = await os.confirm({

View File

@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<div class="_gaps_m"> <div class="_gaps_m">
<MkFolder :defaultOpen="true"> <MkFolder :defaultOpen="true">
<template #icon><i class="ti ti-plane-arrival"></i></template> <template #icon><i class="ph-airplane-landing ph-bold ph-lg"></i></template>
<template #label>{{ i18n.ts._accountMigration.moveFrom }}</template> <template #label>{{ i18n.ts._accountMigration.moveFrom }}</template>
<template #caption>{{ i18n.ts._accountMigration.moveFromSub }}</template> <template #caption>{{ i18n.ts._accountMigration.moveFromSub }}</template>
@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
<div class="_gaps"> <div class="_gaps">
<MkInput v-for="(_, i) in accountAliases" v-model="accountAliases[i]"> <MkInput v-for="(_, i) in accountAliases" v-model="accountAliases[i]">
<template #prefix><i class="ti ti-plane-arrival"></i></template> <template #prefix><i class="ph-airplane-landing ph-bold ph-lg"></i></template>
<template #label>{{ i18n.t('_accountMigration.moveFromLabel', { n: i + 1 }) }}</template> <template #label>{{ i18n.t('_accountMigration.moveFromLabel', { n: i + 1 }) }}</template>
</MkInput> </MkInput>
</div> </div>
@ -28,7 +28,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder> </MkFolder>
<MkFolder :defaultOpen="!!$i?.movedTo"> <MkFolder :defaultOpen="!!$i?.movedTo">
<template #icon><i class="ti ti-plane-departure"></i></template> <template #icon><i class="ph-airplane-takeoff ph-bold ph-lg"></i></template>
<template #label>{{ i18n.ts._accountMigration.moveTo }}</template> <template #label>{{ i18n.ts._accountMigration.moveTo }}</template>
<div class="_gaps_m"> <div class="_gaps_m">
@ -39,7 +39,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<FormInfo warn>{{ i18n.ts._accountMigration.moveCannotBeUndone }}</FormInfo> <FormInfo warn>{{ i18n.ts._accountMigration.moveCannotBeUndone }}</FormInfo>
<MkInput v-model="moveToAccount"> <MkInput v-model="moveToAccount">
<template #prefix><i class="ti ti-plane-departure"></i></template> <template #prefix><i class="ph-airplane-takeoff ph-bold ph-lg"></i></template>
<template #label>{{ i18n.ts._accountMigration.moveToLabel }}</template> <template #label>{{ i18n.ts._accountMigration.moveToLabel }}</template>
</MkInput> </MkInput>
<MkButton inline danger :disabled="!moveToAccount" @click="move"> <MkButton inline danger :disabled="!moveToAccount" @click="move">
@ -120,7 +120,7 @@ init();
definePageMetadata({ definePageMetadata({
title: i18n.ts.accountMigration, title: i18n.ts.accountMigration,
icon: 'ti ti-plane', icon: 'ph-airplane ph-bold ph-lg',
}); });
</script> </script>

View File

@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only
v-if="element.type === '-' || navbarItemDef[element.type]" v-if="element.type === '-' || navbarItemDef[element.type]"
:class="$style.item" :class="$style.item"
> >
<button class="_button" :class="$style.itemHandle"><i class="ti ti-menu"></i></button> <button class="_button" :class="$style.itemHandle"><i class="ph-list ph-bold ph-lg"></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> <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="ph-x ph-bold ph-lg"></i></button> <button class="_button" :class="$style.itemRemove" @click="removeItem(index)"><i class="ph-x ph-bold ph-lg"></i></button>
</div> </div>

View File

@ -47,7 +47,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder> </MkFolder>
<MkFolder> <MkFolder>
<template #icon><i class="ti ti-flask"></i></template> <template #icon><i class="ph-flask ph-bold ph-lg"></i></template>
<template #label>{{ i18n.ts.experimentalFeatures }}</template> <template #label>{{ i18n.ts.experimentalFeatures }}</template>
<div class="_gaps_m"> <div class="_gaps_m">

View File

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

View File

@ -24,17 +24,17 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkInput v-model="profile.location" manualSave> <MkInput v-model="profile.location" manualSave>
<template #label>{{ i18n.ts.location }}</template> <template #label>{{ i18n.ts.location }}</template>
<template #prefix><i class="ti ti-map-pin"></i></template> <template #prefix><i class="ph-map-pin ph-bold ph-lg"></i></template>
</MkInput> </MkInput>
<MkInput v-model="profile.birthday" type="date" manualSave> <MkInput v-model="profile.birthday" type="date" manualSave>
<template #label>{{ i18n.ts.birthday }}</template> <template #label>{{ i18n.ts.birthday }}</template>
<template #prefix><i class="ti ti-cake"></i></template> <template #prefix><i class="ph-cake ph-bold ph-lg"></i></template>
</MkInput> </MkInput>
<MkInput v-model="profile.listenbrainz" manualSave> <MkInput v-model="profile.listenbrainz" manualSave>
<template #label>ListenBrainz</template> <template #label>ListenBrainz</template>
<template #prefix><i class="ti ti-headphones"></i></template> <template #prefix><i class="ph-headphones ph-bold ph-lg"></i></template>
</MkInput> </MkInput>
<MkSelect v-model="profile.lang"> <MkSelect v-model="profile.lang">
@ -51,7 +51,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.metadataMargin"> <div :class="$style.metadataMargin">
<MkButton :disabled="fields.length >= 16" inline style="margin-right: 8px;" @click="addField"><i class="ph-plus ph-bold ph-lg"></i> {{ i18n.ts.add }}</MkButton> <MkButton :disabled="fields.length >= 16" inline style="margin-right: 8px;" @click="addField"><i class="ph-plus ph-bold ph-lg"></i> {{ i18n.ts.add }}</MkButton>
<MkButton v-if="!fieldEditMode" :disabled="fields.length <= 1" inline danger style="margin-right: 8px;" @click="fieldEditMode = !fieldEditMode"><i class="ph-trash ph-bold ph-lg"></i> {{ i18n.ts.delete }}</MkButton> <MkButton v-if="!fieldEditMode" :disabled="fields.length <= 1" inline danger style="margin-right: 8px;" @click="fieldEditMode = !fieldEditMode"><i class="ph-trash ph-bold ph-lg"></i> {{ i18n.ts.delete }}</MkButton>
<MkButton v-else inline style="margin-right: 8px;" @click="fieldEditMode = !fieldEditMode"><i class="ti ti-arrows-sort"></i> {{ i18n.ts.rearrange }}</MkButton> <MkButton v-else inline style="margin-right: 8px;" @click="fieldEditMode = !fieldEditMode"><i class="ph-arrows-down-up ph-bold ph-lg"></i> {{ i18n.ts.rearrange }}</MkButton>
<MkButton inline primary @click="saveFields"><i class="ph-check ph-bold ph-lg"></i> {{ i18n.ts.save }}</MkButton> <MkButton inline primary @click="saveFields"><i class="ph-check ph-bold ph-lg"></i> {{ i18n.ts.save }}</MkButton>
</div> </div>
@ -66,7 +66,7 @@ SPDX-License-Identifier: AGPL-3.0-only
> >
<template #item="{element, index}"> <template #item="{element, index}">
<div :class="$style.fieldDragItem"> <div :class="$style.fieldDragItem">
<button v-if="!fieldEditMode" class="_button" :class="$style.dragItemHandle" tabindex="-1"><i class="ti ti-menu"></i></button> <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" :disabled="fields.length <= 1" class="_button" :class="$style.dragItemRemove" @click="deleteField(index)"><i class="ph-x ph-bold ph-lg"></i></button> <button v-if="fieldEditMode" :disabled="fields.length <= 1" class="_button" :class="$style.dragItemRemove" @click="deleteField(index)"><i class="ph-x ph-bold ph-lg"></i></button>
<div :class="$style.dragItemForm"> <div :class="$style.dragItemForm">
<FormSplit :minWidth="200"> <FormSplit :minWidth="200">

View File

@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkRange> </MkRange>
<div class="_buttons"> <div class="_buttons">
<MkButton inline @click="listen"><i class="ti ti-player-play"></i> {{ i18n.ts.listen }}</MkButton> <MkButton inline @click="listen"><i class="ph-play ph-bold pg-lg"></i> {{ i18n.ts.listen }}</MkButton>
<MkButton inline primary @click="save"><i class="ph-check ph-bold ph-lg"></i> {{ i18n.ts.save }}</MkButton> <MkButton inline primary @click="save"><i class="ph-check ph-bold ph-lg"></i> {{ i18n.ts.save }}</MkButton>
</div> </div>
</div> </div>

View File

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

View File

@ -34,7 +34,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="selects"> <div class="selects">
<MkSelect v-model="lightThemeId" large class="select"> <MkSelect v-model="lightThemeId" large class="select">
<template #label>{{ i18n.ts.themeForLightMode }}</template> <template #label>{{ i18n.ts.themeForLightMode }}</template>
<template #prefix><i class="ti ti-sun"></i></template> <template #prefix><i class="ph-sun ph-bold ph-lg"></i></template>
<option v-if="instanceLightTheme" :key="'instance:' + instanceLightTheme.id" :value="instanceLightTheme.id">{{ instanceLightTheme.name }}</option> <option v-if="instanceLightTheme" :key="'instance:' + instanceLightTheme.id" :value="instanceLightTheme.id">{{ instanceLightTheme.name }}</option>
<optgroup v-if="installedLightThemes.length > 0" :label="i18n.ts._theme.installedThemes"> <optgroup v-if="installedLightThemes.length > 0" :label="i18n.ts._theme.installedThemes">
<option v-for="x in installedLightThemes" :key="'installed:' + x.id" :value="x.id">{{ x.name }}</option> <option v-for="x in installedLightThemes" :key="'installed:' + x.id" :value="x.id">{{ x.name }}</option>
@ -45,7 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkSelect> </MkSelect>
<MkSelect v-model="darkThemeId" large class="select"> <MkSelect v-model="darkThemeId" large class="select">
<template #label>{{ i18n.ts.themeForDarkMode }}</template> <template #label>{{ i18n.ts.themeForDarkMode }}</template>
<template #prefix><i class="ti ti-moon"></i></template> <template #prefix><i class="ph-moon ph-bold ph-lg"></i></template>
<option v-if="instanceDarkTheme" :key="'instance:' + instanceDarkTheme.id" :value="instanceDarkTheme.id">{{ instanceDarkTheme.name }}</option> <option v-if="instanceDarkTheme" :key="'instance:' + instanceDarkTheme.id" :value="instanceDarkTheme.id">{{ instanceDarkTheme.name }}</option>
<optgroup v-if="installedDarkThemes.length > 0" :label="i18n.ts._theme.installedThemes"> <optgroup v-if="installedDarkThemes.length > 0" :label="i18n.ts._theme.installedThemes">
<option v-for="x in installedDarkThemes" :key="'installed:' + x.id" :value="x.id">{{ x.name }}</option> <option v-for="x in installedDarkThemes" :key="'installed:' + x.id" :value="x.id">{{ x.name }}</option>
@ -58,10 +58,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<FormSection> <FormSection>
<div class="_formLinksGrid"> <div class="_formLinksGrid">
<FormLink to="/settings/theme/manage"><template #icon><i class="ti ti-tool"></i></template>{{ i18n.ts._theme.manage }}<template #suffix>{{ themesCount }}</template></FormLink> <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="ph-globe-hemisphere-west ph-bold ph-lg"></i></template>{{ i18n.ts._theme.explore }}</FormLink>
<FormLink to="/settings/theme/install"><template #icon><i class="ph-download ph-bold ph-lg"></i></template>{{ i18n.ts._theme.install }}</FormLink> <FormLink to="/settings/theme/install"><template #icon><i class="ph-download ph-bold ph-lg"></i></template>{{ i18n.ts._theme.install }}</FormLink>
<FormLink to="/theme-editor"><template #icon><i class="ti ti-paint"></i></template>{{ i18n.ts._theme.make }}</FormLink> <FormLink to="/theme-editor"><template #icon><i class="ph-paint-roller ph-bold ph-lg"></i></template>{{ i18n.ts._theme.make }}</FormLink>
</div> </div>
</FormSection> </FormSection>
@ -166,7 +166,7 @@ const headerTabs = $computed(() => []);
definePageMetadata({ definePageMetadata({
title: i18n.ts.theme, title: i18n.ts.theme,
icon: 'ti ti-palette', icon: 'ph-palette ph-bold ph-lg',
}); });
</script> </script>

View File

@ -114,6 +114,6 @@ const headerTabs = $computed(() => []);
definePageMetadata({ definePageMetadata({
title: 'Edit webhook', title: 'Edit webhook',
icon: 'ti ti-webhook', icon: 'ph-webhooks-logo ph-bold ph-lg',
}); });
</script> </script>

View File

@ -84,6 +84,6 @@ const headerTabs = $computed(() => []);
definePageMetadata({ definePageMetadata({
title: 'Create new webhook', title: 'Create new webhook',
icon: 'ti ti-webhook', icon: 'ph-webhooks-logo ph-bold ph-lg',
}); });
</script> </script>

View File

@ -15,8 +15,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="_gaps"> <div class="_gaps">
<FormLink v-for="webhook in items" :key="webhook.id" :to="`/settings/webhook/edit/${webhook.id}`"> <FormLink v-for="webhook in items" :key="webhook.id" :to="`/settings/webhook/edit/${webhook.id}`">
<template #icon> <template #icon>
<i v-if="webhook.active === false" class="ti ti-player-pause"></i> <i v-if="webhook.active === false" class="ph-pause ph-bold ph-lg"></i>
<i v-else-if="webhook.latestStatus === null" class="ti ti-circle"></i> <i v-else-if="webhook.latestStatus === null" class="ph-circle ph-bold ph-lg"></i>
<i v-else-if="[200, 201, 204].includes(webhook.latestStatus)" class="ph-check ph-bold ph-lg" :style="{ color: 'var(--success)' }"></i> <i v-else-if="[200, 201, 204].includes(webhook.latestStatus)" class="ph-check ph-bold ph-lg" :style="{ color: 'var(--success)' }"></i>
<i v-else class="ph-warning ph-bold ph-lg" :style="{ color: 'var(--error)' }"></i> <i v-else class="ph-warning ph-bold ph-lg" :style="{ color: 'var(--error)' }"></i>
</template> </template>
@ -52,6 +52,6 @@ const headerTabs = $computed(() => []);
definePageMetadata({ definePageMetadata({
title: 'Webhook', title: 'Webhook',
icon: 'ti ti-webhook', icon: 'ph-webhooks-logo ph-bold ph-lg',
}); });
</script> </script>

View File

@ -128,6 +128,6 @@ const headerTabs = $computed(() => []);
definePageMetadata({ definePageMetadata({
title: i18n.ts.wordMute, title: i18n.ts.wordMute,
icon: 'ti ti-message-off', icon: 'ph-bell-slash ph-bold ph-lg',
}); });
</script> </script>

View File

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

View File

@ -40,7 +40,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton :class="$style.footerItem" primary rounded gradate @click="tutorial = -1">{{ i18n.ts.done }} <i class="ph-check ph-bold ph-lg"></i></MkButton> <MkButton :class="$style.footerItem" primary rounded gradate @click="tutorial = -1">{{ i18n.ts.done }} <i class="ph-check ph-bold ph-lg"></i></MkButton>
</template> </template>
<template v-else> <template v-else>
<MkButton :class="$style.footerItem" primary rounded gradate @click="tutorial++">{{ i18n.ts.next }} <i class="ti ti-arrow-right"></i></MkButton> <MkButton :class="$style.footerItem" primary rounded gradate @click="tutorial++">{{ i18n.ts.next }} <i class="ph-arrow-right ph-bold pg-lg"></i></MkButton>
</template> </template>
</div> </div>
</div> </div>

View File

@ -71,7 +71,7 @@ async function timetravel() {
} }
const headerActions = $computed(() => list ? [{ const headerActions = $computed(() => list ? [{
icon: 'ti ti-calendar-time', icon: 'ph-calendar ph-bold ph-lg',
text: i18n.ts.jumpToSpecifiedDate, text: i18n.ts.jumpToSpecifiedDate,
handler: timetravel, handler: timetravel,
}, { }, {

View File

@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSpacer :contentMax="700"> <MkSpacer :contentMax="700">
<div class="_gaps"> <div class="_gaps">
<MkFoldableSection class="item"> <MkFoldableSection class="item">
<template #header><i class="ti ti-activity"></i> Heatmap</template> <template #header><i class="ph-pulse ph-bold ph-lg"></i> Heatmap</template>
<XHeatmap :user="user" :src="'notes'"/> <XHeatmap :user="user" :src="'notes'"/>
</MkFoldableSection> </MkFoldableSection>
<MkFoldableSection class="item"> <MkFoldableSection class="item">

View File

@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<span class="username"><MkAcct :user="user" :detail="true"/></span> <span class="username"><MkAcct :user="user" :detail="true"/></span>
<span v-if="user.isAdmin" :title="i18n.ts.isAdmin" style="color: var(--badge);"><i class="ph-shield ph-bold ph-lg"></i></span> <span v-if="user.isAdmin" :title="i18n.ts.isAdmin" style="color: var(--badge);"><i class="ph-shield ph-bold ph-lg"></i></span>
<span v-if="user.isLocked" :title="i18n.ts.isLocked"><i class="ph-lock ph-bold ph-lg"></i></span> <span v-if="user.isLocked" :title="i18n.ts.isLocked"><i class="ph-lock ph-bold ph-lg"></i></span>
<span v-if="user.isBot" :title="i18n.ts.isBot"><i class="ti ti-robot"></i></span> <span v-if="user.isBot" :title="i18n.ts.isBot"><i class="ph-robot ph-bold ph-lg"></i></span>
<button v-if="!isEditingMemo && !memoDraft" class="_button add-note-button" @click="showMemoTextarea"> <button v-if="!isEditingMemo && !memoDraft" class="_button add-note-button" @click="showMemoTextarea">
<i class="ph-pencil-line ph-bold pg-lg"/> {{ i18n.ts.addMemo }} <i class="ph-pencil-line ph-bold pg-lg"/> {{ i18n.ts.addMemo }}
</button> </button>
@ -44,7 +44,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<span class="username"><MkAcct :user="user" :detail="true"/></span> <span class="username"><MkAcct :user="user" :detail="true"/></span>
<span v-if="user.isAdmin" :title="i18n.ts.isAdmin" style="color: var(--badge);"><i class="ph-shield ph-bold ph-lg"></i></span> <span v-if="user.isAdmin" :title="i18n.ts.isAdmin" style="color: var(--badge);"><i class="ph-shield ph-bold ph-lg"></i></span>
<span v-if="user.isLocked" :title="i18n.ts.isLocked"><i class="ph-lock ph-bold ph-lg"></i></span> <span v-if="user.isLocked" :title="i18n.ts.isLocked"><i class="ph-lock ph-bold ph-lg"></i></span>
<span v-if="user.isBot" :title="i18n.ts.isBot"><i class="ti ti-robot"></i></span> <span v-if="user.isBot" :title="i18n.ts.isBot"><i class="ph-robot ph-bold ph-lg"></i></span>
</div> </div>
</div> </div>
<div v-if="user.roles.length > 0" class="roles"> <div v-if="user.roles.length > 0" class="roles">
@ -82,15 +82,15 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
<div class="fields system"> <div class="fields system">
<dl v-if="user.location" class="field"> <dl v-if="user.location" class="field">
<dt class="name"><i class="ti ti-map-pin ti-fw"></i> {{ i18n.ts.location }}</dt> <dt class="name"><i class="ph-map-pin ph-bold ph-lg ti-fw"></i> {{ i18n.ts.location }}</dt>
<dd class="value">{{ user.location }}</dd> <dd class="value">{{ user.location }}</dd>
</dl> </dl>
<dl v-if="user.birthday" class="field"> <dl v-if="user.birthday" class="field">
<dt class="name"><i class="ti ti-cake ti-fw"></i> {{ i18n.ts.birthday }}</dt> <dt class="name"><i class="ph-cake ph-bold ph-lg ti-fw"></i> {{ i18n.ts.birthday }}</dt>
<dd class="value">{{ user.birthday.replace('-', '/').replace('-', '/') }} ({{ i18n.t('yearsOld', { age }) }})</dd> <dd class="value">{{ user.birthday.replace('-', '/').replace('-', '/') }} ({{ i18n.t('yearsOld', { age }) }})</dd>
</dl> </dl>
<dl class="field"> <dl class="field">
<dt class="name"><i class="ti ti-calendar ti-fw"></i> {{ i18n.ts.registeredDate }}</dt> <dt class="name"><i class="ph-calendar ph-bold ph-lg ti-fw"></i> {{ i18n.ts.registeredDate }}</dt>
<dd class="value">{{ dateString(user.createdAt) }} (<MkTime :time="user.createdAt"/>)</dd> <dd class="value">{{ dateString(user.createdAt) }} (<MkTime :time="user.createdAt"/>)</dd>
</dl> </dl>
</div> </div>
@ -101,7 +101,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</dt> </dt>
<dd class="value"> <dd class="value">
<Mfm :text="field.value" :author="user" :i="$i" :colored="false"/> <Mfm :text="field.value" :author="user" :i="$i" :colored="false"/>
<i v-if="user.verifiedLinks.includes(field.value)" v-tooltip:dialog="i18n.ts.verifiedLink" class="ti ti-circle-check" :class="$style.verifiedLink"></i> <i v-if="user.verifiedLinks.includes(field.value)" v-tooltip:dialog="i18n.ts.verifiedLink" class="ph-seal-check ph-bold ph-lg" :class="$style.verifiedLink"></i>
</dd> </dd>
</dl> </dl>
</div> </div>

View File

@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<MkContainer> <MkContainer>
<template #icon><i class="ti ti-chart-line"></i></template> <template #icon><i class="ph-chart-line ph-bold pg-lg"></i></template>
<template #header>{{ i18n.ts.activity }}</template> <template #header>{{ i18n.ts.activity }}</template>
<template #func="{ buttonStyleClass }"> <template #func="{ buttonStyleClass }">
<button class="_button" :class="buttonStyleClass" @click="showMenu"> <button class="_button" :class="buttonStyleClass" @click="showMenu">

View File

@ -2,7 +2,7 @@
<MkContainer :foldable="true"> <MkContainer :foldable="true">
<template #header <template #header
><i ><i
class="ti ti-headphones" class="ph-headphones ph-bold ph-lg"
style="margin-right: 0.5em" style="margin-right: 0.5em"
></i ></i
>Music</template >Music</template
@ -19,7 +19,7 @@
</a> </a>
<a :href="listenbrainz.listenbrainzurl"> <a :href="listenbrainz.listenbrainzurl">
<div class="playicon"> <div class="playicon">
<i class="ti ti-player-play-filled"></i> <i class="ph-play ph-bold pg-lg-filled"></i>
</div> </div>
</a> </a>
</div> </div>

View File

@ -83,7 +83,7 @@ const headerTabs = $computed(() => user ? [{
}, { }, {
key: 'activity', key: 'activity',
title: i18n.ts.activity, title: i18n.ts.activity,
icon: 'ti ti-chart-line', icon: 'ph-chart-line ph-bold pg-lg',
}, ...(user.host == null ? [{ }, ...(user.host == null ? [{
key: 'achievements', key: 'achievements',
title: i18n.ts.achievements, title: i18n.ts.achievements,
@ -103,11 +103,11 @@ const headerTabs = $computed(() => user ? [{
}, { }, {
key: 'pages', key: 'pages',
title: i18n.ts.pages, title: i18n.ts.pages,
icon: 'ti ti-news', icon: 'ph-newspaper ph-bold ph-lg',
}, { }, {
key: 'flashs', key: 'flashs',
title: 'Play', title: 'Play',
icon: 'ti ti-player-play', icon: 'ph-play ph-bold pg-lg',
}, { }, {
key: 'gallery', key: 'gallery',
title: i18n.ts.gallery, title: i18n.ts.gallery,

View File

@ -94,7 +94,7 @@ export async function getNoteClipMenu(props: {
export function getAbuseNoteMenu(note: misskey.entities.Note, text: string): MenuItem { export function getAbuseNoteMenu(note: misskey.entities.Note, text: string): MenuItem {
return { return {
icon: 'ti ti-exclamation-circle', icon: 'ph-warning-circle ph-bold ph-lg',
text, text,
action: (): void => { action: (): void => {
const u = note.url ?? note.uri ?? `${url}/notes/${note.id}`; const u = note.url ?? note.uri ?? `${url}/notes/${note.id}`;
@ -267,7 +267,7 @@ export function getNoteMenu(props: {
menu = [ menu = [
...( ...(
props.currentClip?.userId === $i.id ? [{ props.currentClip?.userId === $i.id ? [{
icon: 'ti ti-backspace', icon: 'ph-backspace ph-bold ph-lg',
text: i18n.ts.unclip, text: i18n.ts.unclip,
danger: true, danger: true,
action: unclip, action: unclip,
@ -294,7 +294,7 @@ export function getNoteMenu(props: {
action: share, action: share,
}, },
instance.translatorAvailable ? { instance.translatorAvailable ? {
icon: 'ti ti-language-hiragana', icon: 'ph-translate ph-bold ph-lg',
text: i18n.ts.translate, text: i18n.ts.translate,
action: translate, action: translate,
} : undefined, } : undefined,
@ -315,11 +315,11 @@ export function getNoteMenu(props: {
children: () => getNoteClipMenu(props), children: () => getNoteClipMenu(props),
}, },
statePromise.then(state => state.isMutedThread ? { statePromise.then(state => state.isMutedThread ? {
icon: 'ti ti-message-off', icon: 'ph-bell-slash ph-bold ph-lg',
text: i18n.ts.unmuteThread, text: i18n.ts.unmuteThread,
action: () => toggleThreadMute(false), action: () => toggleThreadMute(false),
} : { } : {
icon: 'ti ti-message-off', icon: 'ph-bell-slash ph-bold ph-lg',
text: i18n.ts.muteThread, text: i18n.ts.muteThread,
action: () => toggleThreadMute(true), action: () => toggleThreadMute(true),
}), }),
@ -403,7 +403,7 @@ export function getNoteMenu(props: {
if (noteActions.length > 0) { if (noteActions.length > 0) {
menu = menu.concat([null, ...noteActions.map(action => ({ menu = menu.concat([null, ...noteActions.map(action => ({
icon: 'ti ti-plug', icon: 'ph-plug ph-bold ph-lg',
text: action.title, text: action.title,
action: () => { action: () => {
action.handler(appearNote); action.handler(appearNote);

View File

@ -149,7 +149,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
router.push(`/admin/user/${user.id}`); router.push(`/admin/user/${user.id}`);
}, },
}] : []), { }] : []), {
icon: 'ti ti-rss', icon: 'ph-rss ph-bold ph-lg',
text: i18n.ts.copyRSS, text: i18n.ts.copyRSS,
action: () => { action: () => {
copyToClipboard(`${user.host ?? host}/@${user.username}.atom`); copyToClipboard(`${user.host ?? host}/@${user.username}.atom`);
@ -311,7 +311,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
} }
menu = menu.concat([null, { menu = menu.concat([null, {
icon: 'ti ti-exclamation-circle', icon: 'ph-warning-circle ph-bold ph-lg',
text: i18n.ts.reportAbuse, text: i18n.ts.reportAbuse,
action: reportAbuse, action: reportAbuse,
}]); }]);
@ -339,7 +339,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
if (userActions.length > 0) { if (userActions.length > 0) {
menu = menu.concat([null, ...userActions.map(action => ({ menu = menu.concat([null, ...userActions.map(action => ({
icon: 'ti ti-plug', icon: 'ph-plug ph-bold ph-lg',
text: action.title, text: action.title,
action: () => { action: () => {
action.handler(user); action.handler(user);

View File

@ -150,7 +150,7 @@ hr {
} }
} }
.ph-lg { .ti-fw {
display: inline-block; display: inline-block;
text-align: center; text-align: center;
} }

View File

@ -31,12 +31,12 @@ export function openInstanceMenu(ev: MouseEvent) {
}, { }, {
type: 'link', type: 'link',
text: i18n.ts.charts, text: i18n.ts.charts,
icon: 'ti ti-chart-line', icon: 'ph-chart-line ph-bold pg-lg',
to: '/about#charts', to: '/about#charts',
}, null, { }, null, {
type: 'link', type: 'link',
text: i18n.ts.ads, text: i18n.ts.ads,
icon: 'ti ti-ad', icon: 'ph-flag ph-bold ph-lg',
to: '/ads', to: '/ads',
}, ($i && ($i.isAdmin || $i.policies.canInvite) && instance.disableRegistration) ? { }, ($i && ($i.isAdmin || $i.policies.canInvite) && instance.disableRegistration) ? {
type: 'link', type: 'link',
@ -46,17 +46,17 @@ export function openInstanceMenu(ev: MouseEvent) {
} : undefined, { } : undefined, {
type: 'parent', type: 'parent',
text: i18n.ts.tools, text: i18n.ts.tools,
icon: 'ti ti-tool', icon: 'ph-wrench ph-bold ph-lg',
children: [{ children: [{
type: 'link', type: 'link',
to: '/scratchpad', to: '/scratchpad',
text: i18n.ts.scratchpad, text: i18n.ts.scratchpad,
icon: 'ti ti-terminal-2', icon: 'ph-terminal-window ph-bold ph-lg-2',
}, { }, {
type: 'link', type: 'link',
to: '/api-console', to: '/api-console',
text: 'API Console', text: 'API Console',
icon: 'ti ti-terminal-2', icon: 'ph-terminal-window ph-bold ph-lg-2',
}, { }, {
type: 'link', type: 'link',
to: '/clicker', to: '/clicker',

View File

@ -27,7 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<i :class="$style.itemIcon" class="ph-gauge ph-bold pg-lg ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.controlPanel }}</span> <i :class="$style.itemIcon" class="ph-gauge ph-bold pg-lg ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.controlPanel }}</span>
</MkA> </MkA>
<button :class="$style.item" class="_button" @click="more"> <button :class="$style.item" class="_button" @click="more">
<i :class="$style.itemIcon" class="ti ti-grid-dots ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.more }}</span> <i :class="$style.itemIcon" class="ph-dots-nine ph-bold ph-lg ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.more }}</span>
<span v-if="otherMenuItemIndicated" :class="$style.itemIndicator"><i class="_indicatorCircle"></i></span> <span v-if="otherMenuItemIndicated" :class="$style.itemIndicator"><i class="_indicatorCircle"></i></span>
</button> </button>
<MkA :class="$style.item" :activeClass="$style.active" to="/settings"> <MkA :class="$style.item" :activeClass="$style.active" to="/settings">

View File

@ -37,7 +37,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<i :class="$style.itemIcon" class="ph-gauge ph-bold pg-lg ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.controlPanel }}</span> <i :class="$style.itemIcon" class="ph-gauge ph-bold pg-lg ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.controlPanel }}</span>
</MkA> </MkA>
<button class="_button" :class="$style.item" @click="more"> <button class="_button" :class="$style.item" @click="more">
<i :class="$style.itemIcon" class="ti ti-grid-dots ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.more }}</span> <i :class="$style.itemIcon" class="ph-dots-nine ph-bold ph-lg ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.more }}</span>
<span v-if="otherMenuItemIndicated" :class="$style.itemIndicator"><i class="_indicatorCircle"></i></span> <span v-if="otherMenuItemIndicated" :class="$style.itemIndicator"><i class="_indicatorCircle"></i></span>
</button> </button>
<MkA v-tooltip.noDelay.right="i18n.ts.settings" :class="$style.item" :activeClass="$style.active" to="/settings"> <MkA v-tooltip.noDelay.right="i18n.ts.settings" :class="$style.item" :activeClass="$style.active" to="/settings">

View File

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

View File

@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
<div :class="$style.sideMenu"> <div :class="$style.sideMenu">
<div :class="$style.sideMenuTop"> <div :class="$style.sideMenuTop">
<button v-tooltip.noDelay.left="`${i18n.ts._deck.profile}: ${deckStore.state.profile}`" :class="$style.sideMenuButton" class="_button" @click="changeProfile"><i class="ti ti-caret-down"></i></button> <button v-tooltip.noDelay.left="`${i18n.ts._deck.profile}: ${deckStore.state.profile}`" :class="$style.sideMenuButton" class="_button" @click="changeProfile"><i class="ph-caret-down ph-bold ph-lg"></i></button>
<button v-tooltip.noDelay.left="i18n.ts._deck.deleteProfile" :class="$style.sideMenuButton" class="_button" @click="deleteProfile"><i class="ph-trash ph-bold ph-lg"></i></button> <button v-tooltip.noDelay.left="i18n.ts._deck.deleteProfile" :class="$style.sideMenuButton" class="_button" @click="deleteProfile"><i class="ph-trash ph-bold ph-lg"></i></button>
</div> </div>
<div :class="$style.sideMenuMiddle"> <div :class="$style.sideMenuMiddle">
@ -50,7 +50,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
<div v-if="isMobile" :class="$style.nav"> <div v-if="isMobile" :class="$style.nav">
<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="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="mainRouter.push('/')"><i :class="$style.navButtonIcon" class="ph-house ph-bold ph-lg"></i></button> <button :class="$style.navButton" class="_button" @click="mainRouter.push('/')"><i :class="$style.navButtonIcon" class="ph-house ph-bold ph-lg"></i></button>
<button :class="$style.navButton" class="_button" @click="mainRouter.push('/my/notifications')"><i :class="$style.navButtonIcon" class="ph-bell ph-bold pg-lg"></i><span v-if="$i?.hasUnreadNotification" :class="$style.navButtonIndicator"><i class="_indicatorCircle"></i></span></button> <button :class="$style.navButton" class="_button" @click="mainRouter.push('/my/notifications')"><i :class="$style.navButtonIcon" class="ph-bell ph-bold pg-lg"></i><span v-if="$i?.hasUnreadNotification" :class="$style.navButtonIndicator"><i class="_indicatorCircle"></i></span></button>
<button :class="$style.postButton" class="_button" @click="os.post()"><i :class="$style.navButtonIcon" class="ph-pencil ph-bold ph-lg"></i></button> <button :class="$style.postButton" class="_button" @click="os.post()"><i :class="$style.navButtonIcon" class="ph-pencil ph-bold ph-lg"></i></button>

View File

@ -131,40 +131,40 @@ function getMenu() {
}, { }, {
type: 'parent', type: 'parent',
text: i18n.ts.move + '...', text: i18n.ts.move + '...',
icon: 'ti ti-arrows-move', icon: 'ph-arrows-out-cardinal ph-bold ph-lg',
children: [{ children: [{
icon: 'ti ti-arrow-left', icon: 'ph-arrow-left ph-bold pg-lg',
text: i18n.ts._deck.swapLeft, text: i18n.ts._deck.swapLeft,
action: () => { action: () => {
swapLeftColumn(props.column.id); swapLeftColumn(props.column.id);
}, },
}, { }, {
icon: 'ti ti-arrow-right', icon: 'ph-arrow-right ph-bold pg-lg',
text: i18n.ts._deck.swapRight, text: i18n.ts._deck.swapRight,
action: () => { action: () => {
swapRightColumn(props.column.id); swapRightColumn(props.column.id);
}, },
}, props.isStacked ? { }, props.isStacked ? {
icon: 'ti ti-arrow-up', icon: 'ph-arrow-up ph-bold ph-lg',
text: i18n.ts._deck.swapUp, text: i18n.ts._deck.swapUp,
action: () => { action: () => {
swapUpColumn(props.column.id); swapUpColumn(props.column.id);
}, },
} : undefined, props.isStacked ? { } : undefined, props.isStacked ? {
icon: 'ti ti-arrow-down', icon: 'ph-arrow-down ph-bold ph-lg',
text: i18n.ts._deck.swapDown, text: i18n.ts._deck.swapDown,
action: () => { action: () => {
swapDownColumn(props.column.id); swapDownColumn(props.column.id);
}, },
} : undefined], } : undefined],
}, { }, {
icon: 'ti ti-stack-2', icon: 'ph-stack ph-bold ph-lg',
text: i18n.ts._deck.stackLeft, text: i18n.ts._deck.stackLeft,
action: () => { action: () => {
stackLeftColumn(props.column.id); stackLeftColumn(props.column.id);
}, },
}, props.isStacked ? { }, props.isStacked ? {
icon: 'ti ti-window-maximize', icon: 'ph-frame-corners ph-bold ph-lg',
text: i18n.ts._deck.popRight, text: i18n.ts._deck.popRight,
action: () => { action: () => {
popRightColumn(props.column.id); popRightColumn(props.column.id);

View File

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

View File

@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-if="(((column.tl === 'local' || column.tl === 'social') && !isLocalTimelineAvailable) || (column.tl === 'global' && !isGlobalTimelineAvailable))" :class="$style.disabled"> <div v-if="(((column.tl === 'local' || column.tl === 'social') && !isLocalTimelineAvailable) || (column.tl === 'global' && !isGlobalTimelineAvailable))" :class="$style.disabled">
<p :class="$style.disabledTitle"> <p :class="$style.disabledTitle">
<i class="ti ti-circle-minus"></i> <i class="ph-minus-circle ph-bold ph-lg"></i>
{{ i18n.ts._disabledTimeline.title }} {{ i18n.ts._disabledTimeline.title }}
</p> </p>
<p :class="$style.disabledDescription">{{ i18n.ts._disabledTimeline.description }}</p> <p :class="$style.disabledDescription">{{ i18n.ts._disabledTimeline.description }}</p>

View File

@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<button v-if="!isDesktop && !isMobile" :class="$style.widgetButton" class="_button" @click="widgetsShowing = true"><i class="ph-squares-four ph-bold pg-lg"></i></button> <button v-if="!isDesktop && !isMobile" :class="$style.widgetButton" class="_button" @click="widgetsShowing = true"><i class="ph-squares-four ph-bold pg-lg"></i></button>
<div v-if="isMobile" ref="navFooter" :class="$style.nav"> <div v-if="isMobile" ref="navFooter" :class="$style.nav">
<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="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="mainRouter.currentRoute.value.name === 'index' ? top() : mainRouter.push('/')"><i :class="$style.navButtonIcon" class="ph-house ph-bold ph-lg"></i></button> <button :class="$style.navButton" class="_button" @click="mainRouter.currentRoute.value.name === 'index' ? top() : mainRouter.push('/')"><i :class="$style.navButtonIcon" class="ph-house ph-bold ph-lg"></i></button>
<button :class="$style.navButton" class="_button" @click="mainRouter.push('/my/notifications')"><i :class="$style.navButtonIcon" class="ph-bell ph-bold pg-lg"></i><span v-if="$i?.hasUnreadNotification" :class="$style.navButtonIndicator"><i class="_indicatorCircle"></i></span></button> <button :class="$style.navButton" class="_button" @click="mainRouter.push('/my/notifications')"><i :class="$style.navButtonIcon" class="ph-bell ph-bold pg-lg"></i><span v-if="$i?.hasUnreadNotification" :class="$style.navButtonIndicator"><i class="_indicatorCircle"></i></span></button>
<button :class="$style.navButton" class="_button" @click="widgetsShowing = true"><i :class="$style.navButtonIcon" class="ph-squares-four ph-bold pg-lg"></i></button> <button :class="$style.navButton" class="_button" @click="widgetsShowing = true"><i :class="$style.navButtonIcon" class="ph-squares-four ph-bold pg-lg"></i></button>
@ -196,7 +196,7 @@ const onContextmenu = (ev) => {
type: 'label', type: 'label',
text: path, text: path,
}, { }, {
icon: 'ti ti-window-maximize', icon: 'ph-frame-corners ph-bold ph-lg',
text: i18n.ts.openInWindow, text: i18n.ts.openInWindow,
action: () => { action: () => {
os.pageWindow(path); os.pageWindow(path);

View File

@ -16,13 +16,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-if="!root" class="header"> <div v-if="!root" class="header">
<div v-if="narrow === false" class="wide"> <div v-if="narrow === false" class="wide">
<MkA to="/" class="link" activeClass="active"><i class="ph-house ph-bold ph-lg icon"></i> {{ i18n.ts.home }}</MkA> <MkA to="/" class="link" activeClass="active"><i class="ph-house ph-bold ph-lg icon"></i> {{ i18n.ts.home }}</MkA>
<MkA v-if="isTimelineAvailable" to="/timeline" class="link" activeClass="active"><i class="ti ti-message icon"></i> {{ i18n.ts.timeline }}</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="ph-hash ph-bold ph-lg icon"></i> {{ i18n.ts.explore }}</MkA> <MkA to="/explore" class="link" activeClass="active"><i class="ph-hash ph-bold ph-lg icon"></i> {{ i18n.ts.explore }}</MkA>
<MkA to="/channels" class="link" activeClass="active"><i class="ph-television ph-bold ph-lg icon"></i> {{ i18n.ts.channel }}</MkA> <MkA to="/channels" class="link" activeClass="active"><i class="ph-television ph-bold ph-lg icon"></i> {{ i18n.ts.channel }}</MkA>
</div> </div>
<div v-else-if="narrow === true" class="narrow"> <div v-else-if="narrow === true" class="narrow">
<button class="menu _button" @click="showMenu = true"> <button class="menu _button" @click="showMenu = true">
<i class="ti ti-menu-2 icon"></i> <i class="ph-list ph-bold ph-lg-2 icon"></i>
</button> </button>
</div> </div>
</div> </div>
@ -48,13 +48,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<Transition :name="'tray'"> <Transition :name="'tray'">
<div v-if="showMenu" class="menu"> <div v-if="showMenu" class="menu">
<MkA to="/" class="link" activeClass="active"><i class="ph-house ph-bold ph-lg icon"></i>{{ i18n.ts.home }}</MkA> <MkA to="/" class="link" activeClass="active"><i class="ph-house ph-bold ph-lg icon"></i>{{ i18n.ts.home }}</MkA>
<MkA v-if="isTimelineAvailable" to="/timeline" class="link" activeClass="active"><i class="ti ti-message icon"></i>{{ i18n.ts.timeline }}</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="ph-hash ph-bold ph-lg icon"></i>{{ i18n.ts.explore }}</MkA> <MkA to="/explore" class="link" activeClass="active"><i class="ph-hash ph-bold ph-lg 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="ph-megaphone ph-bold ph-lg icon"></i>{{ i18n.ts.announcements }}</MkA>
<MkA to="/channels" class="link" activeClass="active"><i class="ph-television ph-bold ph-lg icon"></i>{{ i18n.ts.channel }}</MkA> <MkA to="/channels" class="link" activeClass="active"><i class="ph-television ph-bold ph-lg icon"></i>{{ i18n.ts.channel }}</MkA>
<div class="divider"></div> <div class="divider"></div>
<MkA to="/pages" class="link" activeClass="active"><i class="ti ti-news icon"></i>{{ i18n.ts.pages }}</MkA> <MkA to="/pages" class="link" activeClass="active"><i class="ph-newspaper ph-bold ph-lg 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="/play" class="link" activeClass="active"><i class="ph-play ph-bold pg-lg icon"></i>Play</MkA>
<MkA to="/gallery" class="link" activeClass="active"><i class="ph-images-square ph-bold pg-lgs icon"></i>{{ i18n.ts.gallery }}</MkA> <MkA to="/gallery" class="link" activeClass="active"><i class="ph-images-square ph-bold pg-lgs icon"></i>{{ i18n.ts.gallery }}</MkA>
<div class="action"> <div class="action">
<button class="_buttonPrimary" @click="signup()">{{ i18n.ts.signup }}</button> <button class="_buttonPrimary" @click="signup()">{{ i18n.ts.signup }}</button>

View File

@ -5,9 +5,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<MkContainer :showHeader="widgetProps.showHeader" :naked="widgetProps.transparent" data-cy-mkw-activity class="mkw-activity"> <MkContainer :showHeader="widgetProps.showHeader" :naked="widgetProps.transparent" data-cy-mkw-activity class="mkw-activity">
<template #icon><i class="ti ti-chart-line"></i></template> <template #icon><i class="ph-chart-line ph-bold pg-lg"></i></template>
<template #header>{{ i18n.ts._widgets.activity }}</template> <template #header>{{ i18n.ts._widgets.activity }}</template>
<template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="toggleView()"><i class="ti ti-selector"></i></button></template> <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="toggleView()"><i class="ph-caret-up-down ph-bold ph-lg"></i></button></template>
<div> <div>
<MkLoading v-if="fetching"/> <MkLoading v-if="fetching"/>

View File

@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<MkContainer :showHeader="widgetProps.showHeader" data-cy-mkw-aiscript class="mkw-aiscript"> <MkContainer :showHeader="widgetProps.showHeader" data-cy-mkw-aiscript class="mkw-aiscript">
<template #icon><i class="ti ti-terminal-2"></i></template> <template #icon><i class="ph-terminal-window ph-bold ph-lg-2"></i></template>
<template #header>{{ i18n.ts._widgets.aiscript }}</template> <template #header>{{ i18n.ts._widgets.aiscript }}</template>
<div class="uylguesu _monospace"> <div class="uylguesu _monospace">

View File

@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<MkContainer :showHeader="widgetProps.showHeader" data-cy-mkw-memo class="mkw-memo"> <MkContainer :showHeader="widgetProps.showHeader" data-cy-mkw-memo class="mkw-memo">
<template #icon><i class="ti ti-note"></i></template> <template #icon><i class="ph-note ph-bold ph-lg"></i></template>
<template #header>{{ i18n.ts._widgets.memo }}</template> <template #header>{{ i18n.ts._widgets.memo }}</template>
<div :class="$style.root"> <div :class="$style.root">

View File

@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<MkContainer :showHeader="widgetProps.showHeader" :naked="widgetProps.transparent" :class="$style.root" :data-transparent="widgetProps.transparent ? true : null" data-cy-mkw-photos class="mkw-photos"> <MkContainer :showHeader="widgetProps.showHeader" :naked="widgetProps.transparent" :class="$style.root" :data-transparent="widgetProps.transparent ? true : null" data-cy-mkw-photos class="mkw-photos">
<template #icon><i class="ti ti-camera"></i></template> <template #icon><i class="ph-camera ph-bold ph-lg"></i></template>
<template #header>{{ i18n.ts._widgets.photos }}</template> <template #header>{{ i18n.ts._widgets.photos }}</template>
<div class=""> <div class="">

View File

@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<MkContainer :showHeader="widgetProps.showHeader" data-cy-mkw-rss class="mkw-rss"> <MkContainer :showHeader="widgetProps.showHeader" data-cy-mkw-rss class="mkw-rss">
<template #icon><i class="ti ti-rss"></i></template> <template #icon><i class="ph-rss ph-bold ph-lg"></i></template>
<template #header>RSS</template> <template #header>RSS</template>
<template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="configure"><i class="ph-gear ph-bold pg-lg"></i></button></template> <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="configure"><i class="ph-gear ph-bold pg-lg"></i></button></template>

View File

@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<MkContainer :naked="widgetProps.transparent" :showHeader="widgetProps.showHeader" class="mkw-rss-ticker"> <MkContainer :naked="widgetProps.transparent" :showHeader="widgetProps.showHeader" class="mkw-rss-ticker">
<template #icon><i class="ti ti-rss"></i></template> <template #icon><i class="ph-rss ph-bold ph-lg"></i></template>
<template #header>RSS</template> <template #header>RSS</template>
<template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="configure"><i class="ph-gear ph-bold pg-lg"></i></button></template> <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="configure"><i class="ph-gear ph-bold pg-lg"></i></button></template>

View File

@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="vrvdvrys"> <div class="vrvdvrys">
<XPie class="pie" :value="usage"/> <XPie class="pie" :value="usage"/>
<div> <div>
<p><i class="ti ti-cpu"></i>CPU</p> <p><i class="ph-cpu ph-bold ph-lg"></i>CPU</p>
<p>{{ meta.cpu.cores }} Logical cores</p> <p>{{ meta.cpu.cores }} Logical cores</p>
<p>{{ meta.cpu.model }}</p> <p>{{ meta.cpu.model }}</p>
</div> </div>

View File

@ -5,9 +5,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<MkContainer :showHeader="widgetProps.showHeader" :naked="widgetProps.transparent"> <MkContainer :showHeader="widgetProps.showHeader" :naked="widgetProps.transparent">
<template #icon><i class="ti ti-server"></i></template> <template #icon><i class="ph-hard-drives ph-bold ph-lg"></i></template>
<template #header>{{ i18n.ts._widgets.serverMetric }}</template> <template #header>{{ i18n.ts._widgets.serverMetric }}</template>
<template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="toggleView()"><i class="ti ti-selector"></i></button></template> <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="toggleView()"><i class="ph-caret-up-down ph-bold ph-lg"></i></button></template>
<div v-if="meta" data-cy-mkw-serverMetric class="mkw-serverMetric"> <div v-if="meta" data-cy-mkw-serverMetric class="mkw-serverMetric">
<XCpuMemory v-if="widgetProps.view === 0" :connection="connection" :meta="meta"/> <XCpuMemory v-if="widgetProps.view === 0" :connection="connection" :meta="meta"/>

View File

@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="zlxnikvl"> <div class="zlxnikvl">
<XPie class="pie" :value="usage"/> <XPie class="pie" :value="usage"/>
<div> <div>
<p><i class="ti ti-section"></i>RAM</p> <p><i class="ph-selection-all ph-bold ph-lg"></i>RAM</p>
<p>Total: {{ bytes(total, 1) }}</p> <p>Total: {{ bytes(total, 1) }}</p>
<p>Used: {{ bytes(used, 1) }}</p> <p>Used: {{ bytes(used, 1) }}</p>
<p>Free: {{ bytes(free, 1) }}</p> <p>Free: {{ bytes(free, 1) }}</p>