This commit is contained in:
syuilo 2022-06-12 15:04:55 +09:00
parent ad3996aca3
commit 63e13110c6
107 changed files with 228 additions and 226 deletions

View File

@ -214,7 +214,7 @@ export async function openAccountMenu(opts: {
}, },
}, { }, {
type: 'link', type: 'link',
icon: 'fas fa-users', icon: 'ti ti-users',
text: i18n.ts.manageAccounts, text: i18n.ts.manageAccounts,
to: `/settings/accounts`, to: `/settings/accounts`,
}]], ev.currentTarget ?? ev.target, { }]], ev.currentTarget ?? ev.target, {

View File

@ -1,7 +1,7 @@
<template> <template>
<XWindow ref="window" :initial-width="400" :initial-height="500" :can-resize="true" @closed="emit('closed')"> <XWindow ref="window" :initial-width="400" :initial-height="500" :can-resize="true" @closed="emit('closed')">
<template #header> <template #header>
<i class="fas fa-exclamation-circle" style="margin-right: 0.5em;"></i> <i class="ti ti-alert-circle" style="margin-right: 0.5em;"></i>
<I18n :src="i18n.ts.reportAbuseOf" tag="span"> <I18n :src="i18n.ts.reportAbuseOf" tag="span">
<template #name> <template #name>
<b><MkAcct :user="user"/></b> <b><MkAcct :user="user"/></b>

View File

@ -2,10 +2,10 @@
<MkA :to="`/channels/${channel.id}`" class="eftoefju _panel" tabindex="-1"> <MkA :to="`/channels/${channel.id}`" class="eftoefju _panel" tabindex="-1">
<div class="banner" :style="bannerStyle"> <div class="banner" :style="bannerStyle">
<div class="fade"></div> <div class="fade"></div>
<div class="name"><i class="fas fa-satellite-dish"></i> {{ channel.name }}</div> <div class="name"><i class="ti ti-satellite-dish"></i> {{ channel.name }}</div>
<div class="status"> <div class="status">
<div> <div>
<i class="fas fa-users fa-fw"></i> <i class="ti ti-users fa-fw"></i>
<I18n :src="i18n.ts._channel.usersCount" tag="span" style="margin-left: 4px;"> <I18n :src="i18n.ts._channel.usersCount" tag="span" style="margin-left: 4px;">
<template #n> <template #n>
<b>{{ channel.usersCount }}</b> <b>{{ channel.usersCount }}</b>

View File

@ -7,15 +7,15 @@
<div v-else-if="!input && !select" class="icon" :class="type"> <div v-else-if="!input && !select" class="icon" :class="type">
<i v-if="type === 'success'" class="ti ti-check"></i> <i v-if="type === 'success'" class="ti ti-check"></i>
<i v-else-if="type === 'error'" class="ti ti-x-circle"></i> <i v-else-if="type === 'error'" class="ti ti-x-circle"></i>
<i v-else-if="type === 'warning'" class="fas fa-exclamation-triangle"></i> <i v-else-if="type === 'warning'" class="ti ti-alert-triangle"></i>
<i v-else-if="type === 'info'" class="fas fa-info-circle"></i> <i v-else-if="type === 'info'" class="ti ti-info-circle"></i>
<i v-else-if="type === 'question'" class="fas fa-question-circle"></i> <i v-else-if="type === 'question'" class="ti ti-question-mark"></i>
<i v-else-if="type === 'waiting'" class="fas fa-spinner fa-pulse"></i> <i v-else-if="type === 'waiting'" class="fas fa-spinner fa-pulse"></i>
</div> </div>
<header v-if="title"><Mfm :text="title"/></header> <header v-if="title"><Mfm :text="title"/></header>
<div v-if="text" class="body"><Mfm :text="text"/></div> <div v-if="text" class="body"><Mfm :text="text"/></div>
<MkInput v-if="input" v-model="inputValue" autofocus :type="input.type || 'text'" :placeholder="input.placeholder || undefined" @keydown="onInputKeydown"> <MkInput v-if="input" v-model="inputValue" autofocus :type="input.type || 'text'" :placeholder="input.placeholder || undefined" @keydown="onInputKeydown">
<template v-if="input.type === 'password'" #prefix><i class="fas fa-lock"></i></template> <template v-if="input.type === 'password'" #prefix><i class="ti ti-lock"></i></template>
</MkInput> </MkInput>
<MkSelect v-if="select" v-model="selectedValue" autofocus> <MkSelect v-if="select" v-model="selectedValue" autofocus>
<template v-if="select.items"> <template v-if="select.items">

View File

@ -572,7 +572,7 @@ function getMenu() {
type: 'label' type: 'label'
}, { }, {
text: i18n.ts.upload, text: i18n.ts.upload,
icon: 'fas fa-upload', icon: 'ti ti-upload',
action: () => { selectLocalFile(); } action: () => { selectLocalFile(); }
}, { }, {
text: i18n.ts.fromUrl, text: i18n.ts.fromUrl,

View File

@ -66,7 +66,7 @@
</div> </div>
<div class="tabs"> <div class="tabs">
<button class="_button tab" :class="{ active: tab === 'index' }" @click="tab = 'index'"><i class="fas fa-asterisk fa-fw"></i></button> <button class="_button tab" :class="{ active: tab === 'index' }" @click="tab = 'index'"><i class="fas fa-asterisk fa-fw"></i></button>
<button class="_button tab" :class="{ active: tab === 'custom' }" @click="tab = 'custom'"><i class="fas fa-laugh fa-fw"></i></button> <button class="_button tab" :class="{ active: tab === 'custom' }" @click="tab = 'custom'"><i class="ti ti-mood-happy fa-fw"></i></button>
<button class="_button tab" :class="{ active: tab === 'unicode' }" @click="tab = 'unicode'"><i class="fas fa-leaf fa-fw"></i></button> <button class="_button tab" :class="{ active: tab === 'unicode' }" @click="tab = 'unicode'"><i class="fas fa-leaf fa-fw"></i></button>
<button class="_button tab" :class="{ active: tab === 'tags' }" @click="tab = 'tags'"><i class="ti ti-hash fa-fw"></i></button> <button class="_button tab" :class="{ active: tab === 'tags' }" @click="tab = 'tags'"><i class="ti ti-hash fa-fw"></i></button>
</div> </div>

View File

@ -8,7 +8,7 @@
</div> </div>
<div v-else> <div v-else>
<div class="wszdbhzo"> <div class="wszdbhzo">
<div><i class="fas fa-exclamation-triangle"></i> {{ $ts.somethingHappened }}</div> <div><i class="ti ti-alert-triangle"></i> {{ $ts.somethingHappened }}</div>
<MkButton inline class="retry" @click="retry"><i class="fas fa-redo-alt"></i> {{ $ts.retry }}</MkButton> <MkButton inline class="retry" @click="retry"><i class="fas fa-redo-alt"></i> {{ $ts.retry }}</MkButton>
</div> </div>
</div> </div>

View File

@ -3,7 +3,7 @@
<div v-if="!showMenu" class="main" :class="ad.place"> <div v-if="!showMenu" class="main" :class="ad.place">
<a :href="ad.url" target="_blank"> <a :href="ad.url" target="_blank">
<img :src="ad.imageUrl"> <img :src="ad.imageUrl">
<button class="_button menu" @click.prevent.stop="toggleMenu"><span class="fas fa-info-circle"></span></button> <button class="_button menu" @click.prevent.stop="toggleMenu"><span class="ti ti-info-circle"></span></button>
</a> </a>
</div> </div>
<div v-else class="menu"> <div v-else class="menu">

View File

@ -2,7 +2,7 @@
<transition :name="$store.state.animation ? 'zoom' : ''" appear> <transition :name="$store.state.animation ? 'zoom' : ''" appear>
<div class="mjndxjcg"> <div class="mjndxjcg">
<img src="https://xn--931a.moe/assets/error.jpg" class="_ghost"/> <img src="https://xn--931a.moe/assets/error.jpg" class="_ghost"/>
<p><i class="fas fa-exclamation-triangle"></i> {{ $ts.somethingHappened }}</p> <p><i class="ti ti-alert-triangle"></i> {{ $ts.somethingHappened }}</p>
<MkButton class="button" @click="() => $emit('retry')">{{ $ts.retry }}</MkButton> <MkButton class="button" @click="() => $emit('retry')">{{ $ts.retry }}</MkButton>
</div> </div>
</transition> </transition>

View File

@ -17,11 +17,11 @@
</div> </div>
<div class="sub"> <div class="sub">
<a v-click-anime href="https://misskey-hub.net/help.html" target="_blank" @click.passive="close()"> <a v-click-anime href="https://misskey-hub.net/help.html" target="_blank" @click.passive="close()">
<i class="fas fa-question-circle icon"></i> <i class="ti ti-question-mark icon"></i>
<div class="text">{{ $ts.help }}</div> <div class="text">{{ $ts.help }}</div>
</a> </a>
<MkA v-click-anime to="/about" @click.passive="close()"> <MkA v-click-anime to="/about" @click.passive="close()">
<i class="fas fa-info-circle icon"></i> <i class="ti ti-info-circle icon"></i>
<div class="text">{{ $t('aboutX', { x: instanceName }) }}</div> <div class="text">{{ $t('aboutX', { x: instanceName }) }}</div>
</MkA> </MkA>
<MkA v-click-anime to="/about-misskey" @click.passive="close()"> <MkA v-click-anime to="/about-misskey" @click.passive="close()">

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="mk-media-banner"> <div class="mk-media-banner">
<div v-if="media.isSensitive && hide" class="sensitive" @click="hide = false"> <div v-if="media.isSensitive && hide" class="sensitive" @click="hide = false">
<span class="icon"><i class="fas fa-exclamation-triangle"></i></span> <span class="icon"><i class="ti ti-alert-triangle"></i></span>
<b>{{ $ts.sensitive }}</b> <b>{{ $ts.sensitive }}</b>
<span>{{ $ts.clickToShow }}</span> <span>{{ $ts.clickToShow }}</span>
</div> </div>

View File

@ -3,7 +3,7 @@
<ImgWithBlurhash class="bg" :hash="image.blurhash" :title="image.comment" :alt="image.comment"/> <ImgWithBlurhash class="bg" :hash="image.blurhash" :title="image.comment" :alt="image.comment"/>
<div class="text"> <div class="text">
<div> <div>
<b><i class="fas fa-exclamation-triangle"></i> {{ $ts.sensitive }}</b> <b><i class="ti ti-alert-triangle"></i> {{ $ts.sensitive }}</b>
<span>{{ $ts.clickToShow }}</span> <span>{{ $ts.clickToShow }}</span>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<template> <template>
<div v-if="hide" class="icozogqfvdetwohsdglrbswgrejoxbdj" @click="hide = false"> <div v-if="hide" class="icozogqfvdetwohsdglrbswgrejoxbdj" @click="hide = false">
<div> <div>
<b><i class="fas fa-exclamation-triangle"></i> {{ $ts.sensitive }}</b> <b><i class="ti ti-alert-triangle"></i> {{ $ts.sensitive }}</b>
<span>{{ $ts.clickToShow }}</span> <span>{{ $ts.clickToShow }}</span>
</div> </div>
</div> </div>

View File

@ -29,7 +29,7 @@
<span v-if="note.visibility !== 'public'" class="visibility"> <span v-if="note.visibility !== 'public'" class="visibility">
<i v-if="note.visibility === 'home'" class="ti ti-home-2"></i> <i v-if="note.visibility === 'home'" class="ti ti-home-2"></i>
<i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i> <i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i>
<i v-else-if="note.visibility === 'specified'" class="fas fa-envelope"></i> <i v-else-if="note.visibility === 'specified'" class="ti ti-mail"></i>
</span> </span>
<span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span> <span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
</div> </div>
@ -46,7 +46,7 @@
<span v-if="appearNote.visibility !== 'public'" class="visibility"> <span v-if="appearNote.visibility !== 'public'" class="visibility">
<i v-if="appearNote.visibility === 'home'" class="ti ti-home-2"></i> <i v-if="appearNote.visibility === 'home'" class="ti ti-home-2"></i>
<i v-else-if="appearNote.visibility === 'followers'" class="fas fa-unlock"></i> <i v-else-if="appearNote.visibility === 'followers'" class="fas fa-unlock"></i>
<i v-else-if="appearNote.visibility === 'specified'" class="fas fa-envelope"></i> <i v-else-if="appearNote.visibility === 'specified'" class="ti ti-mail"></i>
</span> </span>
<span v-if="appearNote.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span> <span v-if="appearNote.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
</div> </div>
@ -81,7 +81,7 @@
<MkUrlPreview v-for="url in urls" :key="url" :url="url" :compact="true" :detail="true" class="url-preview"/> <MkUrlPreview v-for="url in urls" :key="url" :url="url" :compact="true" :detail="true" class="url-preview"/>
<div v-if="appearNote.renote" class="renote"><XNoteSimple :note="appearNote.renote"/></div> <div v-if="appearNote.renote" class="renote"><XNoteSimple :note="appearNote.renote"/></div>
</div> </div>
<MkA v-if="appearNote.channel && !inChannel" class="channel" :to="`/channels/${appearNote.channel.id}`"><i class="fas fa-satellite-dish"></i> {{ appearNote.channel.name }}</MkA> <MkA v-if="appearNote.channel && !inChannel" class="channel" :to="`/channels/${appearNote.channel.id}`"><i class="ti ti-satellite-dish"></i> {{ appearNote.channel.name }}</MkA>
</div> </div>
<footer class="footer"> <footer class="footer">
<div class="info"> <div class="info">

View File

@ -12,7 +12,7 @@
<span v-if="note.visibility !== 'public'" class="visibility"> <span v-if="note.visibility !== 'public'" class="visibility">
<i v-if="note.visibility === 'home'" class="ti ti-home-2"></i> <i v-if="note.visibility === 'home'" class="ti ti-home-2"></i>
<i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i> <i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i>
<i v-else-if="note.visibility === 'specified'" class="fas fa-envelope"></i> <i v-else-if="note.visibility === 'specified'" class="ti ti-mail"></i>
</span> </span>
<span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span> <span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
</div> </div>

View File

@ -31,7 +31,7 @@
<span v-if="note.visibility !== 'public'" class="visibility"> <span v-if="note.visibility !== 'public'" class="visibility">
<i v-if="note.visibility === 'home'" class="ti ti-home-2"></i> <i v-if="note.visibility === 'home'" class="ti ti-home-2"></i>
<i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i> <i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i>
<i v-else-if="note.visibility === 'specified'" class="fas fa-envelope"></i> <i v-else-if="note.visibility === 'specified'" class="ti ti-mail"></i>
</span> </span>
<span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span> <span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
</div> </div>
@ -70,7 +70,7 @@
<span>{{ i18n.ts.showMore }}</span> <span>{{ i18n.ts.showMore }}</span>
</button> </button>
</div> </div>
<MkA v-if="appearNote.channel && !inChannel" class="channel" :to="`/channels/${appearNote.channel.id}`"><i class="fas fa-satellite-dish"></i> {{ appearNote.channel.name }}</MkA> <MkA v-if="appearNote.channel && !inChannel" class="channel" :to="`/channels/${appearNote.channel.id}`"><i class="ti ti-satellite-dish"></i> {{ appearNote.channel.name }}</MkA>
</div> </div>
<footer class="footer"> <footer class="footer">
<XReactionsViewer ref="reactionsViewer" :note="appearNote"/> <XReactionsViewer ref="reactionsViewer" :note="appearNote"/>

View File

@ -6,15 +6,15 @@
<img v-else-if="notification.icon" class="icon" :src="notification.icon" alt=""/> <img v-else-if="notification.icon" class="icon" :src="notification.icon" alt=""/>
<div class="sub-icon" :class="notification.type"> <div class="sub-icon" :class="notification.type">
<i v-if="notification.type === 'follow'" class="fas fa-plus"></i> <i v-if="notification.type === 'follow'" class="fas fa-plus"></i>
<i v-else-if="notification.type === 'receiveFollowRequest'" class="fas fa-clock"></i> <i v-else-if="notification.type === 'receiveFollowRequest'" class="ti ti-clock"></i>
<i v-else-if="notification.type === 'followRequestAccepted'" class="ti ti-check"></i> <i v-else-if="notification.type === 'followRequestAccepted'" class="ti ti-check"></i>
<i v-else-if="notification.type === 'groupInvited'" class="fas fa-id-card-alt"></i> <i v-else-if="notification.type === 'groupInvited'" class="fas fa-id-card-alt"></i>
<i v-else-if="notification.type === 'renote'" class="ti ti-repeat"></i> <i v-else-if="notification.type === 'renote'" class="ti ti-repeat"></i>
<i v-else-if="notification.type === 'reply'" class="fas fa-reply"></i> <i v-else-if="notification.type === 'reply'" class="fas fa-reply"></i>
<i v-else-if="notification.type === 'mention'" class="fas fa-at"></i> <i v-else-if="notification.type === 'mention'" class="ti ti-at"></i>
<i v-else-if="notification.type === 'quote'" class="fas fa-quote-left"></i> <i v-else-if="notification.type === 'quote'" class="fas fa-quote-left"></i>
<i v-else-if="notification.type === 'pollVote'" class="fas fa-poll-h"></i> <i v-else-if="notification.type === 'pollVote'" class="ti ti-chart-arrows"></i>
<i v-else-if="notification.type === 'pollEnded'" class="fas fa-poll-h"></i> <i v-else-if="notification.type === 'pollEnded'" class="ti ti-chart-arrows"></i>
<!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 --> <!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 -->
<XReactionIcon <XReactionIcon
v-else-if="notification.type === 'reaction'" v-else-if="notification.type === 'reaction'"

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="zmdxowus"> <div class="zmdxowus">
<p v-if="choices.length < 2" class="caution"> <p v-if="choices.length < 2" class="caution">
<i class="fas fa-exclamation-triangle"></i>{{ $ts._poll.noOnlyOneChoice }} <i class="ti ti-alert-triangle"></i>{{ $ts._poll.noOnlyOneChoice }}
</p> </p>
<ul> <ul>
<li v-for="(choice, i) in choices" :key="i"> <li v-for="(choice, i) in choices" :key="i">

View File

@ -5,7 +5,7 @@
<div @click="showFileMenu(element, $event)" @contextmenu.prevent="showFileMenu(element, $event)"> <div @click="showFileMenu(element, $event)" @contextmenu.prevent="showFileMenu(element, $event)">
<MkDriveFileThumbnail :data-id="element.id" class="thumbnail" :file="element" fit="cover"/> <MkDriveFileThumbnail :data-id="element.id" class="thumbnail" :file="element" fit="cover"/>
<div v-if="element.isSensitive" class="sensitive"> <div v-if="element.isSensitive" class="sensitive">
<i class="fas fa-exclamation-triangle icon"></i> <i class="ti ti-alert-triangle icon"></i>
</div> </div>
</div> </div>
</template> </template>

View File

@ -1,5 +1,6 @@
<template> <template>
<div v-size="{ max: [310, 500] }" class="gafaadew" <div
v-size="{ max: [310, 500] }" class="gafaadew"
:class="{ modal, _popup: modal }" :class="{ modal, _popup: modal }"
@dragover.stop="onDragover" @dragover.stop="onDragover"
@dragenter="onDragenter" @dragenter="onDragenter"
@ -18,7 +19,7 @@
<span v-if="visibility === 'public'"><i class="ti ti-world"></i></span> <span v-if="visibility === 'public'"><i class="ti ti-world"></i></span>
<span v-if="visibility === 'home'"><i class="ti ti-home-2"></i></span> <span v-if="visibility === 'home'"><i class="ti ti-home-2"></i></span>
<span v-if="visibility === 'followers'"><i class="fas fa-unlock"></i></span> <span v-if="visibility === 'followers'"><i class="fas fa-unlock"></i></span>
<span v-if="visibility === 'specified'"><i class="fas fa-envelope"></i></span> <span v-if="visibility === 'specified'"><i class="ti ti-mail"></i></span>
</button> </button>
<button v-tooltip="i18n.ts.previewNoteText" class="_button preview" :class="{ active: showPreview }" @click="showPreview = !showPreview"><i class="fas fa-file-code"></i></button> <button v-tooltip="i18n.ts.previewNoteText" class="_button preview" :class="{ active: showPreview }" @click="showPreview = !showPreview"><i class="fas fa-file-code"></i></button>
<button class="submit _buttonGradate" :disabled="!canPost" data-cy-open-post-form-submit @click="post">{{ submitText }}<i :class="reply ? 'fas fa-reply' : renote ? 'fas fa-quote-right' : 'ti ti-send'"></i></button> <button class="submit _buttonGradate" :disabled="!canPost" data-cy-open-post-form-submit @click="post">{{ submitText }}<i :class="reply ? 'fas fa-reply' : renote ? 'fas fa-quote-right' : 'ti ti-send'"></i></button>
@ -47,12 +48,12 @@
<XNotePreview v-if="showPreview" class="preview" :text="text"/> <XNotePreview v-if="showPreview" class="preview" :text="text"/>
<footer> <footer>
<button v-tooltip="i18n.ts.attachFile" class="_button" @click="chooseFileFrom"><i class="fas fa-photo-video"></i></button> <button v-tooltip="i18n.ts.attachFile" class="_button" @click="chooseFileFrom"><i class="fas fa-photo-video"></i></button>
<button v-tooltip="i18n.ts.poll" class="_button" :class="{ active: poll }" @click="togglePoll"><i class="fas fa-poll-h"></i></button> <button v-tooltip="i18n.ts.poll" class="_button" :class="{ active: poll }" @click="togglePoll"><i class="ti ti-chart-arrows"></i></button>
<button v-tooltip="i18n.ts.useCw" class="_button" :class="{ active: useCw }" @click="useCw = !useCw"><i class="ti ti-eye-off"></i></button> <button v-tooltip="i18n.ts.useCw" class="_button" :class="{ active: useCw }" @click="useCw = !useCw"><i class="ti ti-eye-off"></i></button>
<button v-tooltip="i18n.ts.mention" class="_button" @click="insertMention"><i class="fas fa-at"></i></button> <button v-tooltip="i18n.ts.mention" class="_button" @click="insertMention"><i class="ti ti-at"></i></button>
<button v-tooltip="i18n.ts.hashtags" class="_button" :class="{ active: withHashtags }" @click="withHashtags = !withHashtags"><i class="ti ti-hash"></i></button> <button v-tooltip="i18n.ts.hashtags" class="_button" :class="{ active: withHashtags }" @click="withHashtags = !withHashtags"><i class="ti ti-hash"></i></button>
<button v-tooltip="i18n.ts.emoji" class="_button" @click="insertEmoji"><i class="fas fa-laugh-squint"></i></button> <button v-tooltip="i18n.ts.emoji" class="_button" @click="insertEmoji"><i class="ti ti-mood-happy"></i></button>
<button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugin" class="_button" @click="showActions"><i class="fas fa-plug"></i></button> <button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugin" class="_button" @click="showActions"><i class="ti ti-plug"></i></button>
</footer> </footer>
<datalist id="hashtags"> <datalist id="hashtags">
<option v-for="hashtag in recentHashtags" :key="hashtag" :value="hashtag"/> <option v-for="hashtag in recentHashtags" :key="hashtag" :value="hashtag"/>
@ -68,6 +69,8 @@ import * as misskey from 'misskey-js';
import insertTextAtCursor from 'insert-text-at-cursor'; import insertTextAtCursor from 'insert-text-at-cursor';
import { length } from 'stringz'; import { length } from 'stringz';
import { toASCII } from 'punycode/'; import { toASCII } from 'punycode/';
import * as Acct from 'misskey-js/built/acct';
import { throttle } from 'throttle-debounce';
import XNoteSimple from './note-simple.vue'; import XNoteSimple from './note-simple.vue';
import XNotePreview from './note-preview.vue'; import XNotePreview from './note-preview.vue';
import XPostFormAttaches from './post-form-attaches.vue'; import XPostFormAttaches from './post-form-attaches.vue';
@ -75,14 +78,12 @@ import XPollEditor from './poll-editor.vue';
import { host, url } from '@/config'; import { host, url } from '@/config';
import { erase, unique } from '@/scripts/array'; import { erase, unique } from '@/scripts/array';
import { extractMentions } from '@/scripts/extract-mentions'; import { extractMentions } from '@/scripts/extract-mentions';
import * as Acct from 'misskey-js/built/acct';
import { formatTimeString } from '@/scripts/format-time-string'; import { formatTimeString } from '@/scripts/format-time-string';
import { Autocomplete } from '@/scripts/autocomplete'; import { Autocomplete } from '@/scripts/autocomplete';
import * as os from '@/os'; import * as os from '@/os';
import { stream } from '@/stream'; import { stream } from '@/stream';
import { selectFiles } from '@/scripts/select-file'; import { selectFiles } from '@/scripts/select-file';
import { defaultStore, notePostInterruptors, postFormActions } from '@/store'; import { defaultStore, notePostInterruptors, postFormActions } from '@/store';
import { throttle } from 'throttle-debounce';
import MkInfo from '@/components/ui/info.vue'; import MkInfo from '@/components/ui/info.vue';
import { i18n } from '@/i18n'; import { i18n } from '@/i18n';
import { instance } from '@/instance'; import { instance } from '@/instance';
@ -181,7 +182,7 @@ const placeholder = $computed((): string => {
i18n.ts._postForm._placeholders.c, i18n.ts._postForm._placeholders.c,
i18n.ts._postForm._placeholders.d, i18n.ts._postForm._placeholders.d,
i18n.ts._postForm._placeholders.e, i18n.ts._postForm._placeholders.e,
i18n.ts._postForm._placeholders.f i18n.ts._postForm._placeholders.f,
]; ];
return xs[Math.floor(Math.random() * xs.length)]; return xs[Math.floor(Math.random() * xs.length)];
} }
@ -238,10 +239,10 @@ if (props.reply && props.reply.text != null) {
for (const x of extractMentions(ast)) { for (const x of extractMentions(ast)) {
const mention = x.host ? const mention = x.host ?
`@${x.username}@${toASCII(x.host)}` : `@${x.username}@${toASCII(x.host)}` :
(otherHost == null || otherHost === host) ? (otherHost == null || otherHost === host) ?
`@${x.username}` : `@${x.username}` :
`@${x.username}@${toASCII(otherHost)}`; `@${x.username}@${toASCII(otherHost)}`;
// //
if ($i.username === x.username && (x.host == null || x.host === host)) continue; if ($i.username === x.username && (x.host == null || x.host === host)) continue;
@ -263,7 +264,7 @@ if (props.reply && ['home', 'followers', 'specified'].includes(props.reply.visib
visibility = props.reply.visibility; visibility = props.reply.visibility;
if (props.reply.visibility === 'specified') { if (props.reply.visibility === 'specified') {
os.api('users/show', { os.api('users/show', {
userIds: props.reply.visibleUserIds.filter(uid => uid !== $i.id && uid !== props.reply.userId) userIds: props.reply.visibleUserIds.filter(uid => uid !== $i.id && uid !== props.reply.userId),
}).then(users => { }).then(users => {
users.forEach(pushVisibleUser); users.forEach(pushVisibleUser);
}); });
@ -399,7 +400,7 @@ function setVisibility() {
if (defaultStore.state.rememberNoteVisibility) { if (defaultStore.state.rememberNoteVisibility) {
defaultStore.set('localOnly', localOnly); defaultStore.set('localOnly', localOnly);
} }
} },
}, 'closed'); }, 'closed');
} }
@ -522,8 +523,8 @@ function saveDraft() {
visibility: visibility, visibility: visibility,
localOnly: localOnly, localOnly: localOnly,
files: files, files: files,
poll: poll poll: poll,
} },
}; };
localStorage.setItem('drafts', JSON.stringify(draftData)); localStorage.setItem('drafts', JSON.stringify(draftData));
@ -612,11 +613,11 @@ function showActions(ev) {
text: action.title, text: action.title,
action: () => { action: () => {
action.handler({ action.handler({
text: text text: text,
}, (key, value) => { }, (key, value) => {
if (key === 'text') { text = value; } if (key === 'text') { text = value; }
}); });
} },
})), ev.currentTarget ?? ev.target); })), ev.currentTarget ?? ev.target);
} }

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="jmgmzlwq _block"><i class="fas fa-exclamation-triangle" style="margin-right: 8px;"></i>{{ $ts.remoteUserCaution }}<a :href="href" rel="nofollow noopener" target="_blank">{{ $ts.showOnRemote }}</a></div> <div class="jmgmzlwq _block"><i class="ti ti-alert-triangle" style="margin-right: 8px;"></i>{{ $ts.remoteUserCaution }}<a :href="href" rel="nofollow noopener" target="_blank">{{ $ts.showOnRemote }}</a></div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>

View File

@ -11,7 +11,7 @@
<template #suffix>@{{ host }}</template> <template #suffix>@{{ host }}</template>
</MkInput> </MkInput>
<MkInput v-if="!user || user && !user.usePasswordLessLogin" v-model="password" class="_formBlock" :placeholder="i18n.ts.password" type="password" :with-password-toggle="true" required data-cy-signin-password> <MkInput v-if="!user || user && !user.usePasswordLessLogin" v-model="password" class="_formBlock" :placeholder="i18n.ts.password" type="password" :with-password-toggle="true" required data-cy-signin-password>
<template #prefix><i class="fas fa-lock"></i></template> <template #prefix><i class="ti ti-lock"></i></template>
<template #caption><button class="_textButton" type="button" @click="resetPassword">{{ i18n.ts.forgotPassword }}</button></template> <template #caption><button class="_textButton" type="button" @click="resetPassword">{{ i18n.ts.forgotPassword }}</button></template>
</MkInput> </MkInput>
<MkButton class="_formBlock" type="submit" primary :disabled="signing" style="margin: 0 auto;">{{ signing ? i18n.ts.loggingIn : i18n.ts.login }}</MkButton> <MkButton class="_formBlock" type="submit" primary :disabled="signing" style="margin: 0 auto;">{{ signing ? i18n.ts.loggingIn : i18n.ts.login }}</MkButton>
@ -30,7 +30,7 @@
<p style="margin-bottom:0;">{{ i18n.ts.twoStepAuthentication }}</p> <p style="margin-bottom:0;">{{ i18n.ts.twoStepAuthentication }}</p>
<MkInput v-if="user && user.usePasswordLessLogin" v-model="password" type="password" :with-password-toggle="true" required> <MkInput v-if="user && user.usePasswordLessLogin" v-model="password" type="password" :with-password-toggle="true" required>
<template #label>{{ i18n.ts.password }}</template> <template #label>{{ i18n.ts.password }}</template>
<template #prefix><i class="fas fa-lock"></i></template> <template #prefix><i class="ti ti-lock"></i></template>
</MkInput> </MkInput>
<MkInput v-model="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false" required> <MkInput v-model="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false" required>
<template #label>{{ i18n.ts.token }}</template> <template #label>{{ i18n.ts.token }}</template>

View File

@ -12,43 +12,43 @@
<template #caption> <template #caption>
<span v-if="usernameState === 'wait'" style="color:#999"><i class="fas fa-spinner fa-pulse fa-fw"></i> {{ $ts.checking }}</span> <span v-if="usernameState === 'wait'" style="color:#999"><i class="fas fa-spinner fa-pulse fa-fw"></i> {{ $ts.checking }}</span>
<span v-else-if="usernameState === 'ok'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.available }}</span> <span v-else-if="usernameState === 'ok'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.available }}</span>
<span v-else-if="usernameState === 'unavailable'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.unavailable }}</span> <span v-else-if="usernameState === 'unavailable'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.unavailable }}</span>
<span v-else-if="usernameState === 'error'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.error }}</span> <span v-else-if="usernameState === 'error'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.error }}</span>
<span v-else-if="usernameState === 'invalid-format'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.usernameInvalidFormat }}</span> <span v-else-if="usernameState === 'invalid-format'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.usernameInvalidFormat }}</span>
<span v-else-if="usernameState === 'min-range'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.tooShort }}</span> <span v-else-if="usernameState === 'min-range'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.tooShort }}</span>
<span v-else-if="usernameState === 'max-range'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.tooLong }}</span> <span v-else-if="usernameState === 'max-range'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.tooLong }}</span>
</template> </template>
</MkInput> </MkInput>
<MkInput v-if="meta.emailRequiredForSignup" v-model="email" class="_formBlock" :debounce="true" type="email" spellcheck="false" required data-cy-signup-email @update:modelValue="onChangeEmail"> <MkInput v-if="meta.emailRequiredForSignup" v-model="email" class="_formBlock" :debounce="true" type="email" spellcheck="false" required data-cy-signup-email @update:modelValue="onChangeEmail">
<template #label>{{ $ts.emailAddress }} <div v-tooltip:dialog="$ts._signup.emailAddressInfo" class="_button _help"><i class="far fa-question-circle"></i></div></template> <template #label>{{ $ts.emailAddress }} <div v-tooltip:dialog="$ts._signup.emailAddressInfo" class="_button _help"><i class="far fa-question-circle"></i></div></template>
<template #prefix><i class="fas fa-envelope"></i></template> <template #prefix><i class="ti ti-mail"></i></template>
<template #caption> <template #caption>
<span v-if="emailState === 'wait'" style="color:#999"><i class="fas fa-spinner fa-pulse fa-fw"></i> {{ $ts.checking }}</span> <span v-if="emailState === 'wait'" style="color:#999"><i class="fas fa-spinner fa-pulse fa-fw"></i> {{ $ts.checking }}</span>
<span v-else-if="emailState === 'ok'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.available }}</span> <span v-else-if="emailState === 'ok'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.available }}</span>
<span v-else-if="emailState === 'unavailable:used'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts._emailUnavailable.used }}</span> <span v-else-if="emailState === 'unavailable:used'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts._emailUnavailable.used }}</span>
<span v-else-if="emailState === 'unavailable:format'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts._emailUnavailable.format }}</span> <span v-else-if="emailState === 'unavailable:format'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts._emailUnavailable.format }}</span>
<span v-else-if="emailState === 'unavailable:disposable'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts._emailUnavailable.disposable }}</span> <span v-else-if="emailState === 'unavailable:disposable'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts._emailUnavailable.disposable }}</span>
<span v-else-if="emailState === 'unavailable:mx'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts._emailUnavailable.mx }}</span> <span v-else-if="emailState === 'unavailable:mx'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts._emailUnavailable.mx }}</span>
<span v-else-if="emailState === 'unavailable:smtp'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts._emailUnavailable.smtp }}</span> <span v-else-if="emailState === 'unavailable:smtp'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts._emailUnavailable.smtp }}</span>
<span v-else-if="emailState === 'unavailable'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.unavailable }}</span> <span v-else-if="emailState === 'unavailable'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.unavailable }}</span>
<span v-else-if="emailState === 'error'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.error }}</span> <span v-else-if="emailState === 'error'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.error }}</span>
</template> </template>
</MkInput> </MkInput>
<MkInput v-model="password" class="_formBlock" type="password" autocomplete="new-password" required data-cy-signup-password @update:modelValue="onChangePassword"> <MkInput v-model="password" class="_formBlock" type="password" autocomplete="new-password" required data-cy-signup-password @update:modelValue="onChangePassword">
<template #label>{{ $ts.password }}</template> <template #label>{{ $ts.password }}</template>
<template #prefix><i class="fas fa-lock"></i></template> <template #prefix><i class="ti ti-lock"></i></template>
<template #caption> <template #caption>
<span v-if="passwordStrength == 'low'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.weakPassword }}</span> <span v-if="passwordStrength == 'low'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.weakPassword }}</span>
<span v-if="passwordStrength == 'medium'" style="color: var(--warn)"><i class="ti ti-check fa-fw"></i> {{ $ts.normalPassword }}</span> <span v-if="passwordStrength == 'medium'" style="color: var(--warn)"><i class="ti ti-check fa-fw"></i> {{ $ts.normalPassword }}</span>
<span v-if="passwordStrength == 'high'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.strongPassword }}</span> <span v-if="passwordStrength == 'high'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.strongPassword }}</span>
</template> </template>
</MkInput> </MkInput>
<MkInput v-model="retypedPassword" class="_formBlock" type="password" autocomplete="new-password" required data-cy-signup-password-retype @update:modelValue="onChangePasswordRetype"> <MkInput v-model="retypedPassword" class="_formBlock" type="password" autocomplete="new-password" required data-cy-signup-password-retype @update:modelValue="onChangePasswordRetype">
<template #label>{{ $ts.password }} ({{ $ts.retype }})</template> <template #label>{{ $ts.password }} ({{ $ts.retype }})</template>
<template #prefix><i class="fas fa-lock"></i></template> <template #prefix><i class="ti ti-lock"></i></template>
<template #caption> <template #caption>
<span v-if="passwordRetypeState == 'match'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.passwordMatched }}</span> <span v-if="passwordRetypeState == 'match'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.passwordMatched }}</span>
<span v-if="passwordRetypeState == 'not-match'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.passwordNotMatched }}</span> <span v-if="passwordRetypeState == 'not-match'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.passwordNotMatched }}</span>
</template> </template>
</MkInput> </MkInput>
<MkSwitch v-if="meta.tosUrl" v-model="ToSAgreement" class="_formBlock tou"> <MkSwitch v-if="meta.tosUrl" v-model="ToSAgreement" class="_formBlock tou">

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="fpezltsf" :class="{ warn }"> <div class="fpezltsf" :class="{ warn }">
<i v-if="warn" class="fas fa-exclamation-triangle"></i> <i v-if="warn" class="ti ti-alert-triangle"></i>
<i v-else class="fas fa-info-circle"></i> <i v-else class="ti ti-info-circle"></i>
<slot></slot> <slot></slot>
</div> </div>
</template> </template>

View File

@ -23,7 +23,7 @@
</div> </div>
</button> </button>
<button key="specified" :disabled="localOnly" class="_button" :class="{ active: v === 'specified' }" data-index="4" @click="choose('specified')"> <button key="specified" :disabled="localOnly" class="_button" :class="{ active: v === 'specified' }" data-index="4" @click="choose('specified')">
<div><i class="fas fa-envelope"></i></div> <div><i class="ti ti-mail"></i></div>
<div> <div>
<span>{{ $ts._visibility.specified }}</span> <span>{{ $ts._visibility.specified }}</span>
<span>{{ $ts._visibility.specifiedDescription }}</span> <span>{{ $ts._visibility.specifiedDescription }}</span>

View File

@ -30,7 +30,7 @@ export const menuDef = reactive({
}, },
followRequests: { followRequests: {
title: 'followRequests', title: 'followRequests',
icon: 'fas fa-user-clock', icon: 'ti ti-user-clock',
show: computed(() => $i != null && $i.isLocked), show: computed(() => $i != null && $i.isLocked),
indicated: computed(() => $i != null && $i.hasPendingReceivedFollowRequest), indicated: computed(() => $i != null && $i.hasPendingReceivedFollowRequest),
to: '/my/follow-requests', to: '/my/follow-requests',
@ -58,7 +58,7 @@ export const menuDef = reactive({
}, },
lists: { lists: {
title: 'lists', title: 'lists',
icon: 'fas fa-list-ul', icon: 'ti ti-list',
show: computed(() => $i != null), show: computed(() => $i != null),
active: computed(() => router.currentRoute.value.path.startsWith('/timeline/list/') || router.currentRoute.value.path === '/my/lists' || router.currentRoute.value.path.startsWith('/my/lists/')), active: computed(() => router.currentRoute.value.path.startsWith('/timeline/list/') || router.currentRoute.value.path === '/my/lists' || router.currentRoute.value.path.startsWith('/my/lists/')),
action: (ev) => { action: (ev) => {
@ -83,13 +83,13 @@ export const menuDef = reactive({
}, },
groups: { groups: {
title: 'groups', title: 'groups',
icon: 'fas fa-users', icon: 'ti ti-users',
show: computed(() => $i != null), show: computed(() => $i != null),
to: '/my/groups', to: '/my/groups',
}, },
antennas: { antennas: {
title: 'antennas', title: 'antennas',
icon: 'fas fa-satellite', icon: 'ti ti-satellite',
show: computed(() => $i != null), show: computed(() => $i != null),
active: computed(() => router.currentRoute.value.path.startsWith('/timeline/antenna/') || router.currentRoute.value.path === '/my/antennas' || router.currentRoute.value.path.startsWith('/my/antennas/')), active: computed(() => router.currentRoute.value.path.startsWith('/timeline/antenna/') || router.currentRoute.value.path === '/my/antennas' || router.currentRoute.value.path.startsWith('/my/antennas/')),
action: (ev) => { action: (ev) => {
@ -114,14 +114,14 @@ export const menuDef = reactive({
}, },
mentions: { mentions: {
title: 'mentions', title: 'mentions',
icon: 'fas fa-at', icon: 'ti ti-at',
show: computed(() => $i != null), show: computed(() => $i != null),
indicated: computed(() => $i != null && $i.hasUnreadMentions), indicated: computed(() => $i != null && $i.hasUnreadMentions),
to: '/my/mentions', to: '/my/mentions',
}, },
messages: { messages: {
title: 'directNotes', title: 'directNotes',
icon: 'fas fa-envelope', icon: 'ti ti-mail',
show: computed(() => $i != null), show: computed(() => $i != null),
indicated: computed(() => $i != null && $i.hasUnreadSpecifiedNotes), indicated: computed(() => $i != null && $i.hasUnreadSpecifiedNotes),
to: '/my/messages', to: '/my/messages',
@ -150,7 +150,7 @@ export const menuDef = reactive({
}, },
channels: { channels: {
title: 'channel', title: 'channel',
icon: 'fas fa-satellite-dish', icon: 'ti ti-satellite-dish',
to: '/channels', to: '/channels',
}, },
federation: { federation: {
@ -160,7 +160,7 @@ export const menuDef = reactive({
}, },
emojis: { emojis: {
title: 'emojis', title: 'emojis',
icon: 'fas fa-laugh', icon: 'ti ti-mood-happy',
to: '/emojis', to: '/emojis',
}, },
scratchpad: { scratchpad: {

View File

@ -3,7 +3,7 @@
<transition :name="$store.state.animation ? 'zoom' : ''" appear> <transition :name="$store.state.animation ? 'zoom' : ''" appear>
<div v-show="loaded" class="mjndxjch"> <div v-show="loaded" class="mjndxjch">
<img src="https://xn--931a.moe/assets/error.jpg" class="_ghost"/> <img src="https://xn--931a.moe/assets/error.jpg" class="_ghost"/>
<p><b><i class="fas fa-exclamation-triangle"></i> {{ i18n.ts.pageLoadError }}</b></p> <p><b><i class="ti ti-alert-triangle"></i> {{ i18n.ts.pageLoadError }}</b></p>
<p v-if="meta && (version === meta.version)">{{ i18n.ts.pageLoadErrorDescription }}</p> <p v-if="meta && (version === meta.version)">{{ i18n.ts.pageLoadErrorDescription }}</p>
<p v-else-if="serverIsDead">{{ i18n.ts.serverIsDead }}</p> <p v-else-if="serverIsDead">{{ i18n.ts.serverIsDead }}</p>
<template v-else> <template v-else>
@ -55,7 +55,7 @@ function reload() {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.error, title: i18n.ts.error,
icon: 'fas fa-exclamation-triangle', icon: 'ti ti-alert-triangle',
}, },
}); });
</script> </script>

View File

@ -96,7 +96,7 @@ const initStats = () => os.api('stats', {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: computed(() => ({ [symbols.PAGE_INFO]: computed(() => ({
title: i18n.ts.instanceInfo, title: i18n.ts.instanceInfo,
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
bg: 'var(--bg)', bg: 'var(--bg)',
tabs: [{ tabs: [{
active: tab === 'overview', active: tab === 'overview',

View File

@ -77,7 +77,7 @@ function resolved(reportId) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.abuseReports, title: i18n.ts.abuseReports,
icon: 'fas fa-exclamation-circle', icon: 'ti ti-alert-circle',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -103,7 +103,7 @@ function save(ad) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.ads, title: i18n.ts.ads,
icon: 'fas fa-audio-description', icon: 'ti ti-ad',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
asFullButton: true, asFullButton: true,

View File

@ -105,7 +105,7 @@ function save() {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.emailServer, title: i18n.ts.emailServer,
icon: 'fas fa-envelope', icon: 'ti ti-mail',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
asFullButton: true, asFullButton: true,

View File

@ -183,7 +183,7 @@ const menu = (ev: MouseEvent) => {
}); });
} }
}, { }, {
icon: 'fas fa-upload', icon: 'ti ti-upload',
text: i18n.ts.import, text: i18n.ts.import,
action: async () => { action: async () => {
const file = await selectFile(ev.currentTarget ?? ev.target); const file = await selectFile(ev.currentTarget ?? ev.target);
@ -268,7 +268,7 @@ const delBulk = async () => {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: computed(() => ({ [symbols.PAGE_INFO]: computed(() => ({
title: i18n.ts.customEmojis, title: i18n.ts.customEmojis,
icon: 'fas fa-laugh', icon: 'ti ti-mood-happy',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
asFullButton: true, asFullButton: true,

View File

@ -79,7 +79,7 @@ const menuDef = $computed(() => [{
action: lookup, action: lookup,
}, ...(instance.disableRegistration ? [{ }, ...(instance.disableRegistration ? [{
type: 'button', type: 'button',
icon: 'fas fa-user', icon: 'ti ti-user',
text: i18n.ts.invite, text: i18n.ts.invite,
action: invite, action: invite,
}] : [])], }] : [])],
@ -91,12 +91,12 @@ const menuDef = $computed(() => [{
to: '/admin/overview', to: '/admin/overview',
active: props.initialPage === 'overview', active: props.initialPage === 'overview',
}, { }, {
icon: 'fas fa-users', icon: 'ti ti-users',
text: i18n.ts.users, text: i18n.ts.users,
to: '/admin/users', to: '/admin/users',
active: props.initialPage === 'users', active: props.initialPage === 'users',
}, { }, {
icon: 'fas fa-laugh', icon: 'ti ti-mood-happy',
text: i18n.ts.customEmojis, text: i18n.ts.customEmojis,
to: '/admin/emojis', to: '/admin/emojis',
active: props.initialPage === 'emojis', active: props.initialPage === 'emojis',
@ -121,12 +121,12 @@ const menuDef = $computed(() => [{
to: '/admin/announcements', to: '/admin/announcements',
active: props.initialPage === 'announcements', active: props.initialPage === 'announcements',
}, { }, {
icon: 'fas fa-audio-description', icon: 'ti ti-ad',
text: i18n.ts.ads, text: i18n.ts.ads,
to: '/admin/ads', to: '/admin/ads',
active: props.initialPage === 'ads', active: props.initialPage === 'ads',
}, { }, {
icon: 'fas fa-exclamation-circle', icon: 'ti ti-alert-circle',
text: i18n.ts.abuseReports, text: i18n.ts.abuseReports,
to: '/admin/abuses', to: '/admin/abuses',
active: props.initialPage === 'abuses', active: props.initialPage === 'abuses',
@ -139,7 +139,7 @@ const menuDef = $computed(() => [{
to: '/admin/settings', to: '/admin/settings',
active: props.initialPage === 'settings', active: props.initialPage === 'settings',
}, { }, {
icon: 'fas fa-envelope', icon: 'ti ti-mail',
text: i18n.ts.emailServer, text: i18n.ts.emailServer,
to: '/admin/email-settings', to: '/admin/email-settings',
active: props.initialPage === 'email-settings', active: props.initialPage === 'email-settings',
@ -149,7 +149,7 @@ const menuDef = $computed(() => [{
to: '/admin/object-storage', to: '/admin/object-storage',
active: props.initialPage === 'object-storage', active: props.initialPage === 'object-storage',
}, { }, {
icon: 'fas fa-lock', icon: 'ti ti-lock',
text: i18n.ts.security, text: i18n.ts.security,
to: '/admin/security', to: '/admin/security',
active: props.initialPage === 'security', active: props.initialPage === 'security',
@ -276,7 +276,7 @@ const invite = () => {
const lookup = (ev) => { const lookup = (ev) => {
os.popupMenu([{ os.popupMenu([{
text: i18n.ts.user, text: i18n.ts.user,
icon: 'fas fa-user', icon: 'ti ti-user',
action: () => { action: () => {
lookupUser(); lookupUser();
} }

View File

@ -38,7 +38,7 @@
<!--<XMetrics/>--> <!--<XMetrics/>-->
<MkFolder style="margin: var(--margin)"> <MkFolder style="margin: var(--margin)">
<template #header><i class="fas fa-info-circle"></i> {{ i18n.ts.info }}</template> <template #header><i class="ti ti-info-circle"></i> {{ i18n.ts.info }}</template>
<div class="cfcdecdf"> <div class="cfcdecdf">
<div class="number _panel"> <div class="number _panel">
<div class="label">Misskey</div> <div class="label">Misskey</div>

View File

@ -5,7 +5,7 @@
<div class="status"> <div class="status">
<i v-if="relay.status === 'accepted'" class="ti ti-check icon accepted"></i> <i v-if="relay.status === 'accepted'" class="ti ti-check icon accepted"></i>
<i v-else-if="relay.status === 'rejected'" class="fas fa-ban icon rejected"></i> <i v-else-if="relay.status === 'rejected'" class="fas fa-ban icon rejected"></i>
<i v-else class="fas fa-clock icon requesting"></i> <i v-else class="ti ti-clock icon requesting"></i>
<span>{{ $t(`_relayStatus.${relay.status}`) }}</span> <span>{{ $t(`_relayStatus.${relay.status}`) }}</span>
</div> </div>
<MkButton class="button" inline danger @click="remove(relay.inbox)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton> <MkButton class="button" inline danger @click="remove(relay.inbox)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton>

View File

@ -66,7 +66,7 @@ function save() {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.security, title: i18n.ts.security,
icon: 'fas fa-lock', icon: 'ti ti-lock',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -21,7 +21,7 @@
</FormInput> </FormInput>
<FormInput v-model="maintainerEmail" type="email" class="_formBlock"> <FormInput v-model="maintainerEmail" type="email" class="_formBlock">
<template #prefix><i class="fas fa-envelope"></i></template> <template #prefix><i class="ti ti-mail"></i></template>
<template #label>{{ i18n.ts.maintainerEmail }}</template> <template #label>{{ i18n.ts.maintainerEmail }}</template>
</FormInput> </FormInput>
</FormSplit> </FormSplit>
@ -66,7 +66,7 @@
</FormInput> </FormInput>
<FormInput v-model="themeColor" class="_formBlock"> <FormInput v-model="themeColor" class="_formBlock">
<template #prefix><i class="fas fa-palette"></i></template> <template #prefix><i class="ti ti-palette"></i></template>
<template #label>{{ i18n.ts.themeColor }}</template> <template #label>{{ i18n.ts.themeColor }}</template>
<template #caption>#RRGGBB</template> <template #caption>#RRGGBB</template>
</FormInput> </FormInput>

View File

@ -125,7 +125,7 @@ function show(user) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: computed(() => ({ [symbols.PAGE_INFO]: computed(() => ({
title: i18n.ts.users, title: i18n.ts.users,
icon: 'fas fa-users', icon: 'ti ti-users',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
icon: 'ti ti-search', icon: 'ti ti-search',

View File

@ -38,7 +38,7 @@ export default defineComponent({
queue: 0, queue: 0,
[symbols.PAGE_INFO]: computed(() => this.antenna ? { [symbols.PAGE_INFO]: computed(() => this.antenna ? {
title: this.antenna.name, title: this.antenna.name,
icon: 'fas fa-satellite', icon: 'ti ti-satellite',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
icon: 'fas fa-calendar-alt', icon: 'fas fa-calendar-alt',

View File

@ -48,11 +48,11 @@ export default defineComponent({
return { return {
[symbols.PAGE_INFO]: computed(() => this.channelId ? { [symbols.PAGE_INFO]: computed(() => this.channelId ? {
title: this.$ts._channel.edit, title: this.$ts._channel.edit,
icon: 'fas fa-satellite-dish', icon: 'ti ti-satellite-dish',
bg: 'var(--bg)', bg: 'var(--bg)',
} : { } : {
title: this.$ts._channel.create, title: this.$ts._channel.create,
icon: 'fas fa-satellite-dish', icon: 'ti ti-satellite-dish',
bg: 'var(--bg)', bg: 'var(--bg)',
}), }),
channel: null, channel: null,

View File

@ -11,7 +11,7 @@
</div> </div>
<div :style="{ backgroundImage: channel.bannerUrl ? `url(${channel.bannerUrl})` : null }" class="banner"> <div :style="{ backgroundImage: channel.bannerUrl ? `url(${channel.bannerUrl})` : null }" class="banner">
<div class="status"> <div class="status">
<div><i class="fas fa-users fa-fw"></i><I18n :src="$ts._channel.usersCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.usersCount }}</b></template></I18n></div> <div><i class="ti ti-users fa-fw"></i><I18n :src="$ts._channel.usersCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.usersCount }}</b></template></I18n></div>
<div><i class="ti ti-pencil fa-fw"></i><I18n :src="$ts._channel.notesCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.notesCount }}</b></template></I18n></div> <div><i class="ti ti-pencil fa-fw"></i><I18n :src="$ts._channel.notesCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.notesCount }}</b></template></I18n></div>
</div> </div>
<div class="fade"></div> <div class="fade"></div>
@ -56,7 +56,7 @@ export default defineComponent({
return { return {
[symbols.PAGE_INFO]: computed(() => this.channel ? { [symbols.PAGE_INFO]: computed(() => this.channel ? {
title: this.channel.name, title: this.channel.name,
icon: 'fas fa-satellite-dish', icon: 'ti ti-satellite-dish',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [...(this.$i && this.$i.id === this.channel.userId ? [{ actions: [...(this.$i && this.$i.id === this.channel.userId ? [{
icon: 'ti ti-cog', icon: 'ti ti-cog',

View File

@ -34,7 +34,7 @@ export default defineComponent({
return { return {
[symbols.PAGE_INFO]: computed(() => ({ [symbols.PAGE_INFO]: computed(() => ({
title: this.$ts.channel, title: this.$ts.channel,
icon: 'fas fa-satellite-dish', icon: 'ti ti-satellite-dish',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
icon: 'fas fa-plus', icon: 'fas fa-plus',

View File

@ -38,7 +38,7 @@ function menu(ev) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.customEmojis, title: i18n.ts.customEmojis,
icon: 'fas fa-laugh', icon: 'ti ti-mood-happy',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
icon: 'ti ti-dots', icon: 'ti ti-dots',

View File

@ -61,7 +61,7 @@ function reject(user) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: computed(() => ({ [symbols.PAGE_INFO]: computed(() => ({
title: i18n.ts.followRequests, title: i18n.ts.followRequests,
icon: 'fas fa-user-clock', icon: 'ti ti-user-clock',
bg: 'var(--bg)', bg: 'var(--bg)',
})), })),
}); });

View File

@ -8,7 +8,7 @@
<div v-if="tab === 'explore'"> <div v-if="tab === 'explore'">
<MkFolder class="_gap"> <MkFolder class="_gap">
<template #header><i class="fas fa-clock"></i>{{ $ts.recentPosts }}</template> <template #header><i class="ti ti-clock"></i>{{ $ts.recentPosts }}</template>
<MkPagination v-slot="{items}" :pagination="recentPostsPagination" :disable-auto-load="true"> <MkPagination v-slot="{items}" :pagination="recentPostsPagination" :disable-auto-load="true">
<div class="vfpdbgtk"> <div class="vfpdbgtk">
<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

@ -11,7 +11,7 @@
<div class="title">{{ post.title }}</div> <div class="title">{{ post.title }}</div>
<div class="description"><Mfm :text="post.description"/></div> <div class="description"><Mfm :text="post.description"/></div>
<div class="info"> <div class="info">
<i class="fas fa-clock"></i> <MkTime :time="post.createdAt" mode="detail"/> <i class="ti ti-clock"></i> <MkTime :time="post.createdAt" mode="detail"/>
</div> </div>
<div class="actions"> <div class="actions">
<div class="like"> <div class="like">
@ -35,7 +35,7 @@
</div> </div>
<MkAd :prefer="['horizontal', 'horizontal-big']"/> <MkAd :prefer="['horizontal', 'horizontal-big']"/>
<MkContainer :max-height="300" :foldable="true" class="other"> <MkContainer :max-height="300" :foldable="true" class="other">
<template #header><i class="fas fa-clock"></i> {{ $ts.recentPosts }}</template> <template #header><i class="ti ti-clock"></i> {{ $ts.recentPosts }}</template>
<MkPagination v-slot="{items}" :pagination="otherPostsPagination"> <MkPagination v-slot="{items}" :pagination="otherPostsPagination">
<div class="sdrarzaf"> <div class="sdrarzaf">
<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

@ -171,7 +171,7 @@ fetch();
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: props.host, title: props.host,
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
text: `https://${props.host}`, text: `https://${props.host}`,

View File

@ -17,7 +17,7 @@ const pagination = {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.mentions, title: i18n.ts.mentions,
icon: 'fas fa-at', icon: 'ti ti-at',
bg: 'var(--bg)', bg: 'var(--bg)',
}, },
}); });

View File

@ -20,7 +20,7 @@ const pagination = {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.directNotes, title: i18n.ts.directNotes,
icon: 'fas fa-envelope', icon: 'ti ti-mail',
bg: 'var(--bg)', bg: 'var(--bg)',
}, },
}); });

View File

@ -122,11 +122,11 @@ export default defineComponent({
start(ev) { start(ev) {
os.popupMenu([{ os.popupMenu([{
text: this.$ts.messagingWithUser, text: this.$ts.messagingWithUser,
icon: 'fas fa-user', icon: 'ti ti-user',
action: () => { this.startUser(); } action: () => { this.startUser(); }
}, { }, {
text: this.$ts.messagingWithGroup, text: this.$ts.messagingWithGroup,
icon: 'fas fa-users', icon: 'ti ti-users',
action: () => { this.startGroup(); } action: () => { this.startGroup(); }
}], ev.currentTarget ?? ev.target); }], ev.currentTarget ?? ev.target);
}, },

View File

@ -1,5 +1,6 @@
<template> <template>
<div class="pemppnzi _block" <div
class="pemppnzi _block"
@dragover.stop="onDragover" @dragover.stop="onDragover"
@drop.stop="onDrop" @drop.stop="onDrop"
> >
@ -16,7 +17,7 @@
<template v-if="!sending"><i class="ti ti-send"></i></template><template v-if="sending"><i class="fas fa-spinner fa-pulse fa-fw"></i></template> <template v-if="!sending"><i class="ti ti-send"></i></template><template v-if="sending"><i class="fas fa-spinner fa-pulse fa-fw"></i></template>
</button> </button>
<button class="_button" @click="chooseFile"><i class="fas fa-photo-video"></i></button> <button class="_button" @click="chooseFile"><i class="fas fa-photo-video"></i></button>
<button class="_button" @click="insertEmoji"><i class="fas fa-laugh-squint"></i></button> <button class="_button" @click="insertEmoji"><i class="ti ti-mood-happy"></i></button>
<input ref="file" type="file" @change="onChangeFile"/> <input ref="file" type="file" @change="onChangeFile"/>
</div> </div>
</template> </template>
@ -25,12 +26,12 @@
import { defineComponent, defineAsyncComponent } from 'vue'; import { defineComponent, defineAsyncComponent } from 'vue';
import insertTextAtCursor from 'insert-text-at-cursor'; import insertTextAtCursor from 'insert-text-at-cursor';
import autosize from 'autosize'; import autosize from 'autosize';
import { throttle } from 'throttle-debounce';
import { formatTimeString } from '@/scripts/format-time-string'; import { formatTimeString } from '@/scripts/format-time-string';
import { selectFile } from '@/scripts/select-file'; import { selectFile } from '@/scripts/select-file';
import * as os from '@/os'; import * as os from '@/os';
import { stream } from '@/stream'; import { stream } from '@/stream';
import { Autocomplete } from '@/scripts/autocomplete'; import { Autocomplete } from '@/scripts/autocomplete';
import { throttle } from 'throttle-debounce';
import { uploadFile } from '@/scripts/upload'; import { uploadFile } from '@/scripts/upload';
export default defineComponent({ export default defineComponent({
@ -63,7 +64,7 @@ export default defineComponent({
}, },
room(): any { room(): any {
return this.$parent; return this.$parent;
} },
}, },
watch: { watch: {
text() { text() {
@ -71,7 +72,7 @@ export default defineComponent({
}, },
file() { file() {
this.saveDraft(); this.saveDraft();
} },
}, },
mounted() { mounted() {
autosize(this.$refs.text); autosize(this.$refs.text);
@ -103,7 +104,7 @@ export default defineComponent({
if (items[0].kind === 'file') { if (items[0].kind === 'file') {
os.alert({ os.alert({
type: 'error', type: 'error',
text: this.$ts.onlyOneFileCanBeAttached text: this.$ts.onlyOneFileCanBeAttached,
}); });
} }
} }
@ -128,7 +129,7 @@ export default defineComponent({
evt.preventDefault(); evt.preventDefault();
os.alert({ os.alert({
type: 'error', type: 'error',
text: this.$ts.onlyOneFileCanBeAttached text: this.$ts.onlyOneFileCanBeAttached,
}); });
return; return;
} }
@ -175,7 +176,7 @@ export default defineComponent({
userId: this.user ? this.user.id : undefined, userId: this.user ? this.user.id : undefined,
groupId: this.group ? this.group.id : undefined, groupId: this.group ? this.group.id : undefined,
text: this.text ? this.text : undefined, text: this.text ? this.text : undefined,
fileId: this.file ? this.file.id : undefined fileId: this.file ? this.file.id : undefined,
}).then(message => { }).then(message => {
this.clear(); this.clear();
}).catch(err => { }).catch(err => {
@ -198,8 +199,8 @@ export default defineComponent({
updatedAt: new Date(), updatedAt: new Date(),
data: { data: {
text: this.text, text: this.text,
file: this.file file: this.file,
} },
}; };
localStorage.setItem('message_drafts', JSON.stringify(drafts)); localStorage.setItem('message_drafts', JSON.stringify(drafts));
@ -215,8 +216,8 @@ export default defineComponent({
async insertEmoji(ev) { async insertEmoji(ev) {
os.openEmojiPicker(ev.currentTarget ?? ev.target, {}, this.$refs.text); os.openEmojiPicker(ev.currentTarget ?? ev.target, {}, this.$refs.text);
} },
} },
}); });
</script> </script>

View File

@ -6,7 +6,7 @@
<div class="_content mk-messaging-room"> <div class="_content mk-messaging-room">
<div class="body"> <div class="body">
<MkLoading v-if="fetching"/> <MkLoading v-if="fetching"/>
<p v-if="!fetching && messages.length == 0" class="empty"><i class="fas fa-info-circle"></i>{{ $ts.noMessagesYet }}</p> <p v-if="!fetching && messages.length == 0" class="empty"><i class="ti ti-info-circle"></i>{{ $ts.noMessagesYet }}</p>
<p v-if="!fetching && messages.length > 0 && !existMoreMessages" class="no-history"><i class="fas fa-flag"></i>{{ $ts.noMoreHistory }}</p> <p v-if="!fetching && messages.length > 0 && !existMoreMessages" class="no-history"><i class="fas fa-flag"></i>{{ $ts.noMoreHistory }}</p>
<button v-show="existMoreMessages" ref="loadMore" class="more _button" :class="{ fetching: fetchingMoreMessages }" :disabled="fetchingMoreMessages" @click="fetchMoreMessages"> <button v-show="existMoreMessages" ref="loadMore" class="more _button" :class="{ fetching: fetchingMoreMessages }" :disabled="fetchingMoreMessages" @click="fetchMoreMessages">
<template v-if="fetchingMoreMessages"><i class="fas fa-spinner fa-pulse fa-fw"></i></template>{{ fetchingMoreMessages ? $ts.loading : $ts.loadMore }} <template v-if="fetchingMoreMessages"><i class="fas fa-spinner fa-pulse fa-fw"></i></template>{{ fetchingMoreMessages ? $ts.loading : $ts.loadMore }}
@ -79,7 +79,7 @@ const Component = defineComponent({
}, },
} : { } : {
title: this.group.name, title: this.group.name,
icon: 'fas fa-users', icon: 'ti ti-users',
action: { action: {
icon: 'ti ti-dots', icon: 'ti ti-dots',
handler: this.menu, handler: this.menu,

View File

@ -310,7 +310,7 @@ export default defineComponent({
return { return {
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: this.$ts._mfm.cheatSheet, title: this.$ts._mfm.cheatSheet,
icon: 'fas fa-question-circle', icon: 'ti ti-question-mark',
}, },
preview_mention: '@example', preview_mention: '@example',
preview_hashtag: '#test', preview_hashtag: '#test',

View File

@ -32,7 +32,7 @@ function onAntennaCreated() {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.manageAntennas, title: i18n.ts.manageAntennas,
icon: 'fas fa-satellite', icon: 'ti ti-satellite',
bg: 'var(--bg)', bg: 'var(--bg)',
}, },
}); });

View File

@ -31,7 +31,7 @@ os.api('antennas/show', { antennaId: props.antennaId }).then((antennaResponse) =
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.manageAntennas, title: i18n.ts.manageAntennas,
icon: 'fas fa-satellite', icon: 'ti ti-satellite',
} }
}); });
</script> </script>

View File

@ -29,7 +29,7 @@ const pagination = {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.manageAntennas, title: i18n.ts.manageAntennas,
icon: 'fas fa-satellite', icon: 'ti ti-satellite',
bg: 'var(--bg)' bg: 'var(--bg)'
} }
}); });

View File

@ -55,7 +55,7 @@ export default defineComponent({
return { return {
[symbols.PAGE_INFO]: computed(() => this.group ? { [symbols.PAGE_INFO]: computed(() => this.group ? {
title: this.group.name, title: this.group.name,
icon: 'fas fa-users', icon: 'ti ti-users',
} : null), } : null),
group: null, group: null,
users: [], users: [],

View File

@ -61,7 +61,7 @@ export default defineComponent({
return { return {
[symbols.PAGE_INFO]: computed(() => ({ [symbols.PAGE_INFO]: computed(() => ({
title: this.$ts.groups, title: this.$ts.groups,
icon: 'fas fa-users', icon: 'ti ti-users',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
icon: 'fas fa-plus', icon: 'fas fa-plus',
@ -71,7 +71,7 @@ export default defineComponent({
tabs: [{ tabs: [{
active: this.tab === 'owned', active: this.tab === 'owned',
title: this.$ts.ownedGroups, title: this.$ts.ownedGroups,
icon: 'fas fa-user-tie', icon: 'ti ti-user-tie',
onClick: () => { this.tab = 'owned'; }, onClick: () => { this.tab = 'owned'; },
}, { }, {
active: this.tab === 'joined', active: this.tab === 'joined',
@ -81,7 +81,7 @@ export default defineComponent({
}, { }, {
active: this.tab === 'invites', active: this.tab === 'invites',
title: this.$ts.invites, title: this.$ts.invites,
icon: 'fas fa-envelope-open-text', icon: 'ti ti-mail-open-text',
onClick: () => { this.tab = 'invites'; }, onClick: () => { this.tab = 'invites'; },
},] },]
})), })),

View File

@ -41,7 +41,7 @@ async function create() {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.manageLists, title: i18n.ts.manageLists,
icon: 'fas fa-list-ul', icon: 'ti ti-list',
bg: 'var(--bg)', bg: 'var(--bg)',
action: { action: {
icon: 'fas fa-plus', icon: 'fas fa-plus',

View File

@ -49,7 +49,7 @@ export default defineComponent({
return { return {
[symbols.PAGE_INFO]: computed(() => this.list ? { [symbols.PAGE_INFO]: computed(() => this.list ? {
title: this.list.name, title: this.list.name,
icon: 'fas fa-list-ul', icon: 'ti ti-list',
bg: 'var(--bg)', bg: 'var(--bg)',
} : null), } : null),
list: null, list: null,

View File

@ -14,7 +14,7 @@ import { i18n } from '@/i18n';
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.notFound, title: i18n.ts.notFound,
icon: 'fas fa-exclamation-triangle', icon: 'ti ti-alert-triangle',
bg: 'var(--bg)', bg: 'var(--bg)',
}, },
}); });

View File

@ -116,7 +116,7 @@ export default defineComponent({
computed: { computed: {
icon(): any { icon(): any {
if (this.modelValue.type === null) return null; if (this.modelValue.type === null) return null;
if (this.modelValue.type.startsWith('fn:')) return 'fas fa-plug'; if (this.modelValue.type.startsWith('fn:')) return 'ti ti-plug';
return blockDefs.find(x => x.type === this.modelValue.type).icon; return blockDefs.find(x => x.type === this.modelValue.type).icon;
}, },
typeText(): any { typeText(): any {

View File

@ -47,7 +47,7 @@
</div> </div>
<MkAd :prefer="['horizontal', 'horizontal-big']"/> <MkAd :prefer="['horizontal', 'horizontal-big']"/>
<MkContainer :max-height="300" :foldable="true" class="other"> <MkContainer :max-height="300" :foldable="true" class="other">
<template #header><i class="fas fa-clock"></i> {{ $ts.recentPosts }}</template> <template #header><i class="ti ti-clock"></i> {{ $ts.recentPosts }}</template>
<MkPagination v-slot="{items}" :pagination="otherPostsPagination"> <MkPagination v-slot="{items}" :pagination="otherPostsPagination">
<MkPagePreview v-for="page in items" :key="page.id" :page="page" class="_gap"/> <MkPagePreview v-for="page in items" :key="page.id" :page="page" class="_gap"/>
</MkPagination> </MkPagination>

View File

@ -2,7 +2,7 @@
<MkSpacer v-if="token" :content-max="700" :margin-min="16" :margin-max="32"> <MkSpacer v-if="token" :content-max="700" :margin-min="16" :margin-max="32">
<div class="_formRoot"> <div class="_formRoot">
<FormInput v-model="password" type="password" class="_formBlock"> <FormInput v-model="password" type="password" class="_formBlock">
<template #prefix><i class="fas fa-lock"></i></template> <template #prefix><i class="ti ti-lock"></i></template>
<template #label>{{ i18n.ts.newPassword }}</template> <template #label>{{ i18n.ts.newPassword }}</template>
</FormInput> </FormInput>
@ -44,7 +44,7 @@ onMounted(() => {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.resetPassword, title: i18n.ts.resetPassword,
icon: 'fas fa-lock', icon: 'ti ti-lock',
bg: 'var(--bg)', bg: 'var(--bg)',
}, },
}); });

View File

@ -150,7 +150,7 @@ onMounted(() => {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.accountInfo, title: i18n.ts.accountInfo,
icon: 'fas fa-info-circle' icon: 'ti ti-info-circle'
} }
}); });
</script> </script>

View File

@ -101,7 +101,7 @@ function switchAccountWithToken(token: string) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.accounts, title: i18n.ts.accounts,
icon: 'fas fa-users', icon: 'ti ti-users',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -63,7 +63,7 @@ function revoke(token) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.installedApps, title: i18n.ts.installedApps,
icon: 'fas fa-plug', icon: 'ti ti-plug',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -45,7 +45,7 @@ async function deleteAccount() {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts._accountDelete.accountDelete, title: i18n.ts._accountDelete.accountDelete,
icon: 'fas fa-exclamation-triangle', icon: 'ti ti-alert-triangle',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -3,7 +3,7 @@
<FormSection> <FormSection>
<template #label>{{ $ts.emailAddress }}</template> <template #label>{{ $ts.emailAddress }}</template>
<FormInput v-model="emailAddress" type="email" manual-save> <FormInput v-model="emailAddress" type="email" manual-save>
<template #prefix><i class="fas fa-envelope"></i></template> <template #prefix><i class="ti ti-mail"></i></template>
<template v-if="$i.email && !$i.emailVerified" #caption>{{ $ts.verificationEmailSent }}</template> <template v-if="$i.email && !$i.emailVerified" #caption>{{ $ts.verificationEmailSent }}</template>
<template v-else-if="emailAddress === $i.email && $i.emailVerified" #caption><i class="ti ti-check" style="color: var(--success);"></i> {{ $ts.emailVerified }}</template> <template v-else-if="emailAddress === $i.email && $i.emailVerified" #caption><i class="ti ti-check" style="color: var(--success);"></i> {{ $ts.emailVerified }}</template>
</FormInput> </FormInput>
@ -103,7 +103,7 @@ onMounted(() => {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.email, title: i18n.ts.email,
icon: 'fas fa-envelope', icon: 'ti ti-mail',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -16,23 +16,23 @@
<MkButton :class="$style.button" inline @click="exportFollowing()"><i class="fas fa-download"></i> {{ $ts.export }}</MkButton> <MkButton :class="$style.button" inline @click="exportFollowing()"><i class="fas fa-download"></i> {{ $ts.export }}</MkButton>
</FormGroup> </FormGroup>
<FormGroup> <FormGroup>
<MkButton :class="$style.button" inline @click="importFollowing($event)"><i class="fas fa-upload"></i> {{ $ts.import }}</MkButton> <MkButton :class="$style.button" inline @click="importFollowing($event)"><i class="ti ti-upload"></i> {{ $ts.import }}</MkButton>
</FormGroup> </FormGroup>
</FormSection> </FormSection>
<FormSection> <FormSection>
<template #label>{{ $ts._exportOrImport.userLists }}</template> <template #label>{{ $ts._exportOrImport.userLists }}</template>
<MkButton :class="$style.button" inline @click="exportUserLists()"><i class="fas fa-download"></i> {{ $ts.export }}</MkButton> <MkButton :class="$style.button" inline @click="exportUserLists()"><i class="fas fa-download"></i> {{ $ts.export }}</MkButton>
<MkButton :class="$style.button" inline @click="importUserLists($event)"><i class="fas fa-upload"></i> {{ $ts.import }}</MkButton> <MkButton :class="$style.button" inline @click="importUserLists($event)"><i class="ti ti-upload"></i> {{ $ts.import }}</MkButton>
</FormSection> </FormSection>
<FormSection> <FormSection>
<template #label>{{ $ts._exportOrImport.muteList }}</template> <template #label>{{ $ts._exportOrImport.muteList }}</template>
<MkButton :class="$style.button" inline @click="exportMuting()"><i class="fas fa-download"></i> {{ $ts.export }}</MkButton> <MkButton :class="$style.button" inline @click="exportMuting()"><i class="fas fa-download"></i> {{ $ts.export }}</MkButton>
<MkButton :class="$style.button" inline @click="importMuting($event)"><i class="fas fa-upload"></i> {{ $ts.import }}</MkButton> <MkButton :class="$style.button" inline @click="importMuting($event)"><i class="ti ti-upload"></i> {{ $ts.import }}</MkButton>
</FormSection> </FormSection>
<FormSection> <FormSection>
<template #label>{{ $ts._exportOrImport.blockingList }}</template> <template #label>{{ $ts._exportOrImport.blockingList }}</template>
<MkButton :class="$style.button" inline @click="exportBlocking()"><i class="fas fa-download"></i> {{ $ts.export }}</MkButton> <MkButton :class="$style.button" inline @click="exportBlocking()"><i class="fas fa-download"></i> {{ $ts.export }}</MkButton>
<MkButton :class="$style.button" inline @click="importBlocking($event)"><i class="fas fa-upload"></i> {{ $ts.import }}</MkButton> <MkButton :class="$style.button" inline @click="importBlocking($event)"><i class="ti ti-upload"></i> {{ $ts.import }}</MkButton>
</FormSection> </FormSection>
</div> </div>
</template> </template>

View File

@ -65,17 +65,17 @@ const ro = new ResizeObserver((entries, observer) => {
const menuDef = computed(() => [{ const menuDef = computed(() => [{
title: i18n.ts.basicSettings, title: i18n.ts.basicSettings,
items: [{ items: [{
icon: 'fas fa-user', icon: 'ti ti-user',
text: i18n.ts.profile, text: i18n.ts.profile,
to: '/settings/profile', to: '/settings/profile',
active: props.initialPage === 'profile', active: props.initialPage === 'profile',
}, { }, {
icon: 'fas fa-lock-open', icon: 'ti ti-lock-open',
text: i18n.ts.privacy, text: i18n.ts.privacy,
to: '/settings/privacy', to: '/settings/privacy',
active: props.initialPage === 'privacy', active: props.initialPage === 'privacy',
}, { }, {
icon: 'fas fa-laugh', icon: 'ti ti-mood-happy',
text: i18n.ts.reaction, text: i18n.ts.reaction,
to: '/settings/reaction', to: '/settings/reaction',
active: props.initialPage === 'reaction', active: props.initialPage === 'reaction',
@ -90,7 +90,7 @@ const menuDef = computed(() => [{
to: '/settings/notifications', to: '/settings/notifications',
active: props.initialPage === 'notifications', active: props.initialPage === 'notifications',
}, { }, {
icon: 'fas fa-envelope', icon: 'ti ti-mail',
text: i18n.ts.email, text: i18n.ts.email,
to: '/settings/email', to: '/settings/email',
active: props.initialPage === 'email', active: props.initialPage === 'email',
@ -100,7 +100,7 @@ const menuDef = computed(() => [{
to: '/settings/integration', to: '/settings/integration',
active: props.initialPage === 'integration', active: props.initialPage === 'integration',
}, { }, {
icon: 'fas fa-lock', icon: 'ti ti-lock',
text: i18n.ts.security, text: i18n.ts.security,
to: '/settings/security', to: '/settings/security',
active: props.initialPage === 'security', active: props.initialPage === 'security',
@ -113,12 +113,12 @@ const menuDef = computed(() => [{
to: '/settings/general', to: '/settings/general',
active: props.initialPage === 'general', active: props.initialPage === 'general',
}, { }, {
icon: 'fas fa-palette', icon: 'ti ti-palette',
text: i18n.ts.theme, text: i18n.ts.theme,
to: '/settings/theme', to: '/settings/theme',
active: props.initialPage === 'theme', active: props.initialPage === 'theme',
}, { }, {
icon: 'fas fa-list-ul', icon: 'ti ti-list',
text: i18n.ts.menu, text: i18n.ts.menu,
to: '/settings/menu', to: '/settings/menu',
active: props.initialPage === 'menu', active: props.initialPage === 'menu',
@ -128,7 +128,7 @@ const menuDef = computed(() => [{
to: '/settings/sounds', to: '/settings/sounds',
active: props.initialPage === 'sounds', active: props.initialPage === 'sounds',
}, { }, {
icon: 'fas fa-plug', icon: 'ti ti-plug',
text: i18n.ts.plugins, text: i18n.ts.plugins,
to: '/settings/plugin', to: '/settings/plugin',
active: props.initialPage === 'plugin', active: props.initialPage === 'plugin',
@ -141,7 +141,7 @@ const menuDef = computed(() => [{
to: '/settings/import-export', to: '/settings/import-export',
active: props.initialPage === 'import-export', active: props.initialPage === 'import-export',
}, { }, {
icon: 'fas fa-volume-mute', icon: 'ti ti-volume-3',
text: i18n.ts.instanceMute, text: i18n.ts.instanceMute,
to: '/settings/instance-mute', to: '/settings/instance-mute',
active: props.initialPage === 'instance-mute', active: props.initialPage === 'instance-mute',

View File

@ -45,7 +45,7 @@ watch(instanceMutes, () => {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.instanceMute, title: i18n.ts.instanceMute,
icon: 'fas fa-volume-mute' icon: 'ti ti-volume-3'
} }
}); });
</script> </script>

View File

@ -79,7 +79,7 @@ watch(menuDisplay, async () => {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.menu, title: i18n.ts.menu,
icon: 'fas fa-list-ul', icon: 'ti ti-list',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -10,7 +10,7 @@
<FormLink to="/settings/account-info" class="_formBlock">{{ i18n.ts.accountInfo }}</FormLink> <FormLink to="/settings/account-info" class="_formBlock">{{ i18n.ts.accountInfo }}</FormLink>
<FormLink to="/settings/delete-account" class="_formBlock"><template #icon><i class="fas fa-exclamation-triangle"></i></template>{{ i18n.ts.closeAccount }}</FormLink> <FormLink to="/settings/delete-account" class="_formBlock"><template #icon><i class="ti ti-alert-triangle"></i></template>{{ i18n.ts.closeAccount }}</FormLink>
</div> </div>
</template> </template>

View File

@ -86,7 +86,7 @@ function changeActive(plugin, active) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.plugins, title: i18n.ts.plugins,
icon: 'fas fa-plug', icon: 'ti ti-plug',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -87,7 +87,7 @@ function save() {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.privacy, title: i18n.ts.privacy,
icon: 'fas fa-lock-open', icon: 'ti ti-lock-open',
bg: 'var(--bg)', bg: 'var(--bg)',
}, },
}); });

View File

@ -179,7 +179,7 @@ function changeBanner(ev) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.profile, title: i18n.ts.profile,
icon: 'fas fa-user', icon: 'ti ti-user',
bg: 'var(--bg)', bg: 'var(--bg)',
}, },
}); });

View File

@ -123,7 +123,7 @@ watch($$(reactions), () => {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.reaction, title: i18n.ts.reaction,
icon: 'fas fa-laugh', icon: 'ti ti-mood-happy',
action: { action: {
icon: 'ti ti-eye', icon: 'ti ti-eye',
handler: preview, handler: preview,

View File

@ -101,7 +101,7 @@ function regenerateToken() {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.security, title: i18n.ts.security,
icon: 'fas fa-lock', icon: 'ti ti-lock',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -38,7 +38,7 @@ const masterVolume = computed({
} }
}); });
const volumeIcon = computed(() => masterVolume.value === 0 ? 'fas fa-volume-mute' : 'fas fa-volume-up'); const volumeIcon = computed(() => masterVolume.value === 0 ? 'ti ti-volume-3' : 'ti ti-volume');
const sounds = ref({ const sounds = ref({
note: ColdDeviceStorage.get('sound_note'), note: ColdDeviceStorage.get('sound_note'),

View File

@ -171,7 +171,7 @@ function setWallpaper(event) {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.theme, title: i18n.ts.theme,
icon: 'fas fa-palette', icon: 'ti ti-palette',
bg: 'var(--bg)', bg: 'var(--bg)',
} }
}); });

View File

@ -9,7 +9,7 @@
</FormInput> </FormInput>
<FormInput v-model="secret" class="_formBlock"> <FormInput v-model="secret" class="_formBlock">
<template #prefix><i class="fas fa-lock"></i></template> <template #prefix><i class="ti ti-lock"></i></template>
<template #label>Secret</template> <template #label>Secret</template>
</FormInput> </FormInput>

View File

@ -9,7 +9,7 @@
</FormInput> </FormInput>
<FormInput v-model="secret" class="_formBlock"> <FormInput v-model="secret" class="_formBlock">
<template #prefix><i class="fas fa-lock"></i></template> <template #prefix><i class="ti ti-lock"></i></template>
<template #label>Secret</template> <template #label>Secret</template>
</FormInput> </FormInput>

View File

@ -29,7 +29,7 @@ onMounted(async () => {
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.signup, title: i18n.ts.signup,
icon: 'fas fa-user', icon: 'ti ti-user',
}, },
}); });
</script> </script>

View File

@ -207,7 +207,7 @@ watch($$(theme), apply, { deep: true });
defineExpose({ defineExpose({
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: i18n.ts.themeEditor, title: i18n.ts.themeEditor,
icon: 'fas fa-palette', icon: 'ti ti-palette',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
asFullButton: true, asFullButton: true,

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="_card tbkwesmv"> <div class="_card tbkwesmv">
<div class="_title"><i class="fas fa-info-circle"></i> {{ $ts._tutorial.title }}</div> <div class="_title"><i class="ti ti-info-circle"></i> {{ $ts._tutorial.title }}</div>
<div v-if="tutorial === 0" class="_content"> <div v-if="tutorial === 0" class="_content">
<div>{{ $ts._tutorial.step1_1 }}</div> <div>{{ $ts._tutorial.step1_1 }}</div>
<div>{{ $ts._tutorial.step1_2 }}</div> <div>{{ $ts._tutorial.step1_2 }}</div>

View File

@ -117,15 +117,15 @@ defineExpose({
icon: src === 'local' ? 'ti ti-messages' : src === 'social' ? 'ti ti-share' : src === 'global' ? 'ti ti-world' : 'ti ti-home-2', icon: src === 'local' ? 'ti ti-messages' : src === 'social' ? 'ti ti-share' : src === 'global' ? 'ti ti-world' : 'ti ti-home-2',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
icon: 'fas fa-list-ul', icon: 'ti ti-list',
text: i18n.ts.lists, text: i18n.ts.lists,
handler: chooseList, handler: chooseList,
}, { }, {
icon: 'fas fa-satellite', icon: 'ti ti-satellite',
text: i18n.ts.antennas, text: i18n.ts.antennas,
handler: chooseAntenna, handler: chooseAntenna,
}, { }, {
icon: 'fas fa-satellite-dish', icon: 'ti ti-satellite-dish',
text: i18n.ts.channel, text: i18n.ts.channel,
handler: chooseChannel, handler: chooseChannel,
}, { }, {

View File

@ -104,7 +104,7 @@ export default defineComponent({
return { return {
[symbols.PAGE_INFO]: computed(() => ({ [symbols.PAGE_INFO]: computed(() => ({
title: this.user ? acct(this.user) : this.$ts.userInfo, title: this.user ? acct(this.user) : this.$ts.userInfo,
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: this.user ? [this.user.url ? { actions: this.user ? [this.user.url ? {
text: this.user.url, text: this.user.url,

View File

@ -38,7 +38,7 @@ export default defineComponent({
queue: 0, queue: 0,
[symbols.PAGE_INFO]: computed(() => this.list ? { [symbols.PAGE_INFO]: computed(() => this.list ? {
title: this.list.name, title: this.list.name,
icon: 'fas fa-list-ul', icon: 'ti ti-list',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
icon: 'fas fa-calendar-alt', icon: 'fas fa-calendar-alt',

View File

@ -5,8 +5,8 @@
<div v-size="{ max: [500] }" class="ftskorzw" :class="{ wide: !narrow }"> <div v-size="{ max: [500] }" class="ftskorzw" :class="{ wide: !narrow }">
<div class="main"> <div class="main">
<!-- TODO --> <!-- TODO -->
<!-- <div class="punished" v-if="user.isSuspended"><i class="fas fa-exclamation-triangle" style="margin-right: 8px;"></i> {{ $ts.userSuspended }}</div> --> <!-- <div class="punished" v-if="user.isSuspended"><i class="ti ti-alert-triangle" style="margin-right: 8px;"></i> {{ $ts.userSuspended }}</div> -->
<!-- <div class="punished" v-if="user.isSilenced"><i class="fas fa-exclamation-triangle" style="margin-right: 8px;"></i> {{ $ts.userSilenced }}</div> --> <!-- <div class="punished" v-if="user.isSilenced"><i class="ti ti-alert-triangle" style="margin-right: 8px;"></i> {{ $ts.userSilenced }}</div> -->
<div class="profile"> <div class="profile">
<MkRemoteCaution v-if="user.host != null" :href="user.url" class="warn"/> <MkRemoteCaution v-if="user.host != null" :href="user.url" class="warn"/>
@ -21,7 +21,7 @@
<span class="username"><MkAcct :user="user" :detail="true" /></span> <span class="username"><MkAcct :user="user" :detail="true" /></span>
<span v-if="user.isAdmin" :title="$ts.isAdmin" style="color: var(--badge);"><i class="fas fa-bookmark"></i></span> <span v-if="user.isAdmin" :title="$ts.isAdmin" style="color: var(--badge);"><i class="fas fa-bookmark"></i></span>
<span v-if="!user.isAdmin && user.isModerator" :title="$ts.isModerator" style="color: var(--badge);"><i class="far fa-bookmark"></i></span> <span v-if="!user.isAdmin && user.isModerator" :title="$ts.isModerator" style="color: var(--badge);"><i class="far fa-bookmark"></i></span>
<span v-if="user.isLocked" :title="$ts.isLocked"><i class="fas fa-lock"></i></span> <span v-if="user.isLocked" :title="$ts.isLocked"><i class="ti ti-lock"></i></span>
<span v-if="user.isBot" :title="$ts.isBot"><i class="fas fa-robot"></i></span> <span v-if="user.isBot" :title="$ts.isBot"><i class="fas fa-robot"></i></span>
</div> </div>
</div> </div>
@ -38,7 +38,7 @@
<span class="username"><MkAcct :user="user" :detail="true" /></span> <span class="username"><MkAcct :user="user" :detail="true" /></span>
<span v-if="user.isAdmin" :title="$ts.isAdmin" style="color: var(--badge);"><i class="fas fa-bookmark"></i></span> <span v-if="user.isAdmin" :title="$ts.isAdmin" style="color: var(--badge);"><i class="fas fa-bookmark"></i></span>
<span v-if="!user.isAdmin && user.isModerator" :title="$ts.isModerator" style="color: var(--badge);"><i class="far fa-bookmark"></i></span> <span v-if="!user.isAdmin && user.isModerator" :title="$ts.isModerator" style="color: var(--badge);"><i class="far fa-bookmark"></i></span>
<span v-if="user.isLocked" :title="$ts.isLocked"><i class="fas fa-lock"></i></span> <span v-if="user.isLocked" :title="$ts.isLocked"><i class="ti ti-lock"></i></span>
<span v-if="user.isBot" :title="$ts.isBot"><i class="fas fa-robot"></i></span> <span v-if="user.isBot" :title="$ts.isBot"><i class="fas fa-robot"></i></span>
</div> </div>
</div> </div>
@ -177,7 +177,7 @@ export default defineComponent({
data() { data() {
return { return {
[symbols.PAGE_INFO]: computed(() => this.user ? { [symbols.PAGE_INFO]: computed(() => this.user ? {
icon: 'fas fa-user', icon: 'ti ti-user',
title: this.user.name ? `${this.user.name} (@${this.user.username})` : `@${this.user.username}`, title: this.user.name ? `${this.user.name} (@${this.user.username})` : `@${this.user.username}`,
subtitle: `@${getAcct(this.user)}`, subtitle: `@${getAcct(this.user)}`,
userName: this.user, userName: this.user,
@ -195,7 +195,7 @@ export default defineComponent({
}, ...(this.$i && (this.$i.id === this.user.id)) || this.user.publicReactions ? [{ }, ...(this.$i && (this.$i.id === this.user.id)) || this.user.publicReactions ? [{
active: this.page === 'reactions', active: this.page === 'reactions',
title: this.$ts.reaction, title: this.$ts.reaction,
icon: 'fas fa-laugh', icon: 'ti ti-mood-happy',
onClick: () => { this.mkNav.push('/@' + getAcct(this.user) + '/reactions'); }, onClick: () => { this.mkNav.push('/@' + getAcct(this.user) + '/reactions'); },
}] : [], { }] : [], {
active: this.page === 'clips', active: this.page === 'clips',

View File

@ -119,19 +119,19 @@ export default defineComponent({
showMenu(ev) { showMenu(ev) {
os.popupMenu([{ os.popupMenu([{
text: this.$t('aboutX', { x: instanceName }), text: this.$t('aboutX', { x: instanceName }),
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
action: () => { action: () => {
os.pageWindow('/about'); os.pageWindow('/about');
} }
}, { }, {
text: this.$ts.aboutMisskey, text: this.$ts.aboutMisskey,
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
action: () => { action: () => {
os.pageWindow('/about-misskey'); os.pageWindow('/about-misskey');
} }
}, null, { }, null, {
text: this.$ts.help, text: this.$ts.help,
icon: 'fas fa-question-circle', icon: 'ti ti-question-mark',
action: () => { action: () => {
window.open(`https://misskey-hub.net/help.md`, '_blank'); window.open(`https://misskey-hub.net/help.md`, '_blank');
} }

View File

@ -103,19 +103,19 @@ export default defineComponent({
showMenu(ev) { showMenu(ev) {
os.popupMenu([{ os.popupMenu([{
text: this.$t('aboutX', { x: instanceName }), text: this.$t('aboutX', { x: instanceName }),
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
action: () => { action: () => {
os.pageWindow('/about'); os.pageWindow('/about');
} }
}, { }, {
text: this.$ts.aboutMisskey, text: this.$ts.aboutMisskey,
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
action: () => { action: () => {
os.pageWindow('/about-misskey'); os.pageWindow('/about-misskey');
} }
}, null, { }, null, {
text: this.$ts.help, text: this.$ts.help,
icon: 'fas fa-question-circle', icon: 'ti ti-question-mark',
action: () => { action: () => {
window.open(`https://misskey-hub.net/help.md`, '_blank'); window.open(`https://misskey-hub.net/help.md`, '_blank');
} }

View File

@ -123,19 +123,19 @@ export default defineComponent({
showMenu(ev) { showMenu(ev) {
os.popupMenu([{ os.popupMenu([{
text: this.$t('aboutX', { x: instanceName }), text: this.$t('aboutX', { x: instanceName }),
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
action: () => { action: () => {
os.pageWindow('/about'); os.pageWindow('/about');
} }
}, { }, {
text: this.$ts.aboutMisskey, text: this.$ts.aboutMisskey,
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
action: () => { action: () => {
os.pageWindow('/about-misskey'); os.pageWindow('/about-misskey');
} }
}, null, { }, null, {
text: this.$ts.help, text: this.$ts.help,
icon: 'fas fa-question-circle', icon: 'ti ti-question-mark',
action: () => { action: () => {
window.open(`https://misskey-hub.net/help.md`, '_blank'); window.open(`https://misskey-hub.net/help.md`, '_blank');
} }

View File

@ -10,7 +10,7 @@
</MkInput> </MkInput>
<MkInput v-model="password" type="password" data-cy-admin-password class="_formBlock"> <MkInput v-model="password" type="password" data-cy-admin-password class="_formBlock">
<template #label>{{ $ts.password }}</template> <template #label>{{ $ts.password }}</template>
<template #prefix><i class="fas fa-lock"></i></template> <template #prefix><i class="ti ti-lock"></i></template>
</MkInput> </MkInput>
<div class="bottom _formBlock"> <div class="bottom _formBlock">
<MkButton gradate type="submit" :disabled="submitting" data-cy-admin-ok> <MkButton gradate type="submit" :disabled="submitting" data-cy-admin-ok>

View File

@ -249,7 +249,7 @@ export function getNoteMenu(props: {
...(appearNote.userId !== $i.id ? [ ...(appearNote.userId !== $i.id ? [
null, null,
{ {
icon: 'fas fa-exclamation-circle', icon: 'ti ti-alert-circle',
text: i18n.ts.reportAbuse, text: i18n.ts.reportAbuse,
action: () => { action: () => {
const u = appearNote.url || appearNote.uri || `${url}/notes/${appearNote.id}`; const u = appearNote.url || appearNote.uri || `${url}/notes/${appearNote.id}`;
@ -298,7 +298,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: 'fas fa-plug', icon: 'ti ti-plug',
text: action.title, text: action.title,
action: () => { action: () => {
action.handler(appearNote); action.handler(appearNote);

View File

@ -152,19 +152,19 @@ export function getUserMenu(user) {
} }
let menu = [{ let menu = [{
icon: 'fas fa-at', icon: 'ti ti-at',
text: i18n.ts.copyUsername, text: i18n.ts.copyUsername,
action: () => { action: () => {
copyToClipboard(`@${user.username}@${user.host || host}`); copyToClipboard(`@${user.username}@${user.host || host}`);
} }
}, { }, {
icon: 'fas fa-info-circle', icon: 'ti ti-info-circle',
text: i18n.ts.info, text: i18n.ts.info,
action: () => { action: () => {
os.pageWindow(`/user-info/${user.id}`); os.pageWindow(`/user-info/${user.id}`);
} }
}, { }, {
icon: 'fas fa-envelope', icon: 'ti ti-mail',
text: i18n.ts.sendMessage, text: i18n.ts.sendMessage,
action: () => { action: () => {
os.post({ specified: user }); os.post({ specified: user });
@ -175,11 +175,11 @@ export function getUserMenu(user) {
text: i18n.ts.startMessaging, text: i18n.ts.startMessaging,
to: '/my/messaging/' + Acct.toString(user), to: '/my/messaging/' + Acct.toString(user),
} : undefined, null, { } : undefined, null, {
icon: 'fas fa-list-ul', icon: 'ti ti-list',
text: i18n.ts.addToList, text: i18n.ts.addToList,
action: pushList action: pushList
}, meId !== user.id ? { }, meId !== user.id ? {
icon: 'fas fa-users', icon: 'ti ti-users',
text: i18n.ts.inviteToGroup, text: i18n.ts.inviteToGroup,
action: inviteGroup action: inviteGroup
} : undefined] as any; } : undefined] as any;
@ -204,7 +204,7 @@ export function getUserMenu(user) {
} }
menu = menu.concat([null, { menu = menu.concat([null, {
icon: 'fas fa-exclamation-circle', icon: 'ti ti-alert-circle',
text: i18n.ts.reportAbuse, text: i18n.ts.reportAbuse,
action: reportAbuse action: reportAbuse
}]); }]);
@ -234,7 +234,7 @@ export function getUserMenu(user) {
if (userActions.length > 0) { if (userActions.length > 0) {
menu = menu.concat([null, ...userActions.map(action => ({ menu = menu.concat([null, ...userActions.map(action => ({
icon: 'fas fa-plug', icon: 'ti ti-plug',
text: action.title, text: action.title,
action: () => { action: () => {
action.handler(user); action.handler(user);

View File

@ -83,7 +83,7 @@ function select(src: any, label: string | null, multiple: boolean): Promise<Driv
ref: keepOriginal ref: keepOriginal
}, { }, {
text: i18n.ts.upload, text: i18n.ts.upload,
icon: 'fas fa-upload', icon: 'ti ti-upload',
action: chooseFileFromPc action: chooseFileFromPc
}, { }, {
text: i18n.ts.fromDrive, text: i18n.ts.fromDrive,

View File

@ -129,7 +129,7 @@ hr {
.ti { .ti {
font-size: 120%; font-size: 120%;
vertical-align: text-bottom; vertical-align: -10%;
} }
._noSelect { ._noSelect {

View File

@ -1,7 +1,7 @@
<template> <template>
<XColumn :func="{ handler: setAntenna, title: $ts.selectAntenna }" :column="column" :is-stacked="isStacked" @parent-focus="$event => emit('parent-focus', $event)"> <XColumn :func="{ handler: setAntenna, title: $ts.selectAntenna }" :column="column" :is-stacked="isStacked" @parent-focus="$event => emit('parent-focus', $event)">
<template #header> <template #header>
<i class="fas fa-satellite"></i><span style="margin-left: 8px;">{{ column.name }}</span> <i class="ti ti-satellite"></i><span style="margin-left: 8px;">{{ column.name }}</span>
</template> </template>
<XTimeline v-if="column.antennaId" ref="timeline" src="antenna" :antenna="column.antennaId" @after="() => emit('loaded')"/> <XTimeline v-if="column.antennaId" ref="timeline" src="antenna" :antenna="column.antennaId" @after="() => emit('loaded')"/>

View File

@ -1,6 +1,6 @@
<template> <template>
<XColumn :column="column" :is-stacked="isStacked" @parent-focus="$event => emit('parent-focus', $event)"> <XColumn :column="column" :is-stacked="isStacked" @parent-focus="$event => emit('parent-focus', $event)">
<template #header><i class="fas fa-envelope" style="margin-right: 8px;"></i>{{ column.name }}</template> <template #header><i class="ti ti-mail" style="margin-right: 8px;"></i>{{ column.name }}</template>
<XNotes :pagination="pagination"/> <XNotes :pagination="pagination"/>
</XColumn> </XColumn>

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