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',
icon: 'fas fa-users',
icon: 'ti ti-users',
text: i18n.ts.manageAccounts,
to: `/settings/accounts`,
}]], ev.currentTarget ?? ev.target, {

View File

@ -1,7 +1,7 @@
<template>
<XWindow ref="window" :initial-width="400" :initial-height="500" :can-resize="true" @closed="emit('closed')">
<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">
<template #name>
<b><MkAcct :user="user"/></b>

View File

@ -2,10 +2,10 @@
<MkA :to="`/channels/${channel.id}`" class="eftoefju _panel" tabindex="-1">
<div class="banner" :style="bannerStyle">
<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>
<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;">
<template #n>
<b>{{ channel.usersCount }}</b>

View File

@ -7,15 +7,15 @@
<div v-else-if="!input && !select" class="icon" :class="type">
<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 === 'warning'" class="fas fa-exclamation-triangle"></i>
<i v-else-if="type === 'info'" class="fas fa-info-circle"></i>
<i v-else-if="type === 'question'" class="fas fa-question-circle"></i>
<i v-else-if="type === 'warning'" class="ti ti-alert-triangle"></i>
<i v-else-if="type === 'info'" class="ti ti-info-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>
</div>
<header v-if="title"><Mfm :text="title"/></header>
<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">
<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>
<MkSelect v-if="select" v-model="selectedValue" autofocus>
<template v-if="select.items">

View File

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

View File

@ -66,7 +66,7 @@
</div>
<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 === '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 === 'tags' }" @click="tab = 'tags'"><i class="ti ti-hash fa-fw"></i></button>
</div>

View File

@ -8,7 +8,7 @@
</div>
<div v-else>
<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>
</div>
</div>

View File

@ -3,7 +3,7 @@
<div v-if="!showMenu" class="main" :class="ad.place">
<a :href="ad.url" target="_blank">
<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>
</div>
<div v-else class="menu">

View File

@ -2,7 +2,7 @@
<transition :name="$store.state.animation ? 'zoom' : ''" appear>
<div class="mjndxjcg">
<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>
</div>
</transition>

View File

@ -17,11 +17,11 @@
</div>
<div class="sub">
<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>
</a>
<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>
</MkA>
<MkA v-click-anime to="/about-misskey" @click.passive="close()">

View File

@ -1,7 +1,7 @@
<template>
<div class="mk-media-banner">
<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>
<span>{{ $ts.clickToShow }}</span>
</div>

View File

@ -3,7 +3,7 @@
<ImgWithBlurhash class="bg" :hash="image.blurhash" :title="image.comment" :alt="image.comment"/>
<div class="text">
<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>
</div>
</div>

View File

@ -1,7 +1,7 @@
<template>
<div v-if="hide" class="icozogqfvdetwohsdglrbswgrejoxbdj" @click="hide = false">
<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>
</div>
</div>

View File

@ -29,7 +29,7 @@
<span v-if="note.visibility !== 'public'" class="visibility">
<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 === 'specified'" class="fas fa-envelope"></i>
<i v-else-if="note.visibility === 'specified'" class="ti ti-mail"></i>
</span>
<span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
</div>
@ -46,7 +46,7 @@
<span v-if="appearNote.visibility !== 'public'" class="visibility">
<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 === 'specified'" class="fas fa-envelope"></i>
<i v-else-if="appearNote.visibility === 'specified'" class="ti ti-mail"></i>
</span>
<span v-if="appearNote.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
</div>
@ -81,7 +81,7 @@
<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>
<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>
<footer class="footer">
<div class="info">

View File

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

View File

@ -31,7 +31,7 @@
<span v-if="note.visibility !== 'public'" class="visibility">
<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 === 'specified'" class="fas fa-envelope"></i>
<i v-else-if="note.visibility === 'specified'" class="ti ti-mail"></i>
</span>
<span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
</div>
@ -70,7 +70,7 @@
<span>{{ i18n.ts.showMore }}</span>
</button>
</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>
<footer class="footer">
<XReactionsViewer ref="reactionsViewer" :note="appearNote"/>

View File

@ -6,15 +6,15 @@
<img v-else-if="notification.icon" class="icon" :src="notification.icon" alt=""/>
<div class="sub-icon" :class="notification.type">
<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 === '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 === '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 === 'pollVote'" class="fas fa-poll-h"></i>
<i v-else-if="notification.type === 'pollEnded'" 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="ti ti-chart-arrows"></i>
<!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 -->
<XReactionIcon
v-else-if="notification.type === 'reaction'"

View File

@ -1,7 +1,7 @@
<template>
<div class="zmdxowus">
<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>
<ul>
<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)">
<MkDriveFileThumbnail :data-id="element.id" class="thumbnail" :file="element" fit="cover"/>
<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>
</template>

View File

@ -1,5 +1,6 @@
<template>
<div v-size="{ max: [310, 500] }" class="gafaadew"
<div
v-size="{ max: [310, 500] }" class="gafaadew"
:class="{ modal, _popup: modal }"
@dragover.stop="onDragover"
@dragenter="onDragenter"
@ -18,7 +19,7 @@
<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 === '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 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>
@ -47,12 +48,12 @@
<XNotePreview v-if="showPreview" class="preview" :text="text"/>
<footer>
<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.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.emoji" class="_button" @click="insertEmoji"><i class="fas fa-laugh-squint"></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-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="ti ti-plug"></i></button>
</footer>
<datalist id="hashtags">
<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 { length } from 'stringz';
import { toASCII } from 'punycode/';
import * as Acct from 'misskey-js/built/acct';
import { throttle } from 'throttle-debounce';
import XNoteSimple from './note-simple.vue';
import XNotePreview from './note-preview.vue';
import XPostFormAttaches from './post-form-attaches.vue';
@ -75,14 +78,12 @@ import XPollEditor from './poll-editor.vue';
import { host, url } from '@/config';
import { erase, unique } from '@/scripts/array';
import { extractMentions } from '@/scripts/extract-mentions';
import * as Acct from 'misskey-js/built/acct';
import { formatTimeString } from '@/scripts/format-time-string';
import { Autocomplete } from '@/scripts/autocomplete';
import * as os from '@/os';
import { stream } from '@/stream';
import { selectFiles } from '@/scripts/select-file';
import { defaultStore, notePostInterruptors, postFormActions } from '@/store';
import { throttle } from 'throttle-debounce';
import MkInfo from '@/components/ui/info.vue';
import { i18n } from '@/i18n';
import { instance } from '@/instance';
@ -181,7 +182,7 @@ const placeholder = $computed((): string => {
i18n.ts._postForm._placeholders.c,
i18n.ts._postForm._placeholders.d,
i18n.ts._postForm._placeholders.e,
i18n.ts._postForm._placeholders.f
i18n.ts._postForm._placeholders.f,
];
return xs[Math.floor(Math.random() * xs.length)];
}
@ -263,7 +264,7 @@ if (props.reply && ['home', 'followers', 'specified'].includes(props.reply.visib
visibility = props.reply.visibility;
if (props.reply.visibility === 'specified') {
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 => {
users.forEach(pushVisibleUser);
});
@ -399,7 +400,7 @@ function setVisibility() {
if (defaultStore.state.rememberNoteVisibility) {
defaultStore.set('localOnly', localOnly);
}
}
},
}, 'closed');
}
@ -522,8 +523,8 @@ function saveDraft() {
visibility: visibility,
localOnly: localOnly,
files: files,
poll: poll
}
poll: poll,
},
};
localStorage.setItem('drafts', JSON.stringify(draftData));
@ -612,11 +613,11 @@ function showActions(ev) {
text: action.title,
action: () => {
action.handler({
text: text
text: text,
}, (key, value) => {
if (key === 'text') { text = value; }
});
}
},
})), ev.currentTarget ?? ev.target);
}

View File

@ -1,5 +1,5 @@
<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>
<script lang="ts" setup>

View File

@ -11,7 +11,7 @@
<template #suffix>@{{ host }}</template>
</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>
<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>
</MkInput>
<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>
<MkInput v-if="user && user.usePasswordLessLogin" v-model="password" type="password" :with-password-toggle="true" required>
<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 v-model="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false" required>
<template #label>{{ i18n.ts.token }}</template>

View File

@ -12,43 +12,43 @@
<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-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 === 'error'" style="color: var(--error)"><i class="fas fa-exclamation-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 === 'min-range'" style="color: var(--error)"><i class="fas fa-exclamation-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 === '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="ti ti-alert-triangle fa-fw"></i> {{ $ts.error }}</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="ti ti-alert-triangle fa-fw"></i> {{ $ts.tooShort }}</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>
</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">
<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>
<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 === '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:format'" style="color: var(--error)"><i class="fas fa-exclamation-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:mx'" style="color: var(--error)"><i class="fas fa-exclamation-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'" style="color: var(--error)"><i class="fas fa-exclamation-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 === '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="ti ti-alert-triangle fa-fw"></i> {{ $ts._emailUnavailable.format }}</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="ti ti-alert-triangle fa-fw"></i> {{ $ts._emailUnavailable.mx }}</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="ti ti-alert-triangle fa-fw"></i> {{ $ts.unavailable }}</span>
<span v-else-if="emailState === 'error'" style="color: var(--error)"><i class="ti ti-alert-triangle fa-fw"></i> {{ $ts.error }}</span>
</template>
</MkInput>
<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 #prefix><i class="fas fa-lock"></i></template>
<template #prefix><i class="ti ti-lock"></i></template>
<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 == 'high'" style="color: var(--success)"><i class="ti ti-check fa-fw"></i> {{ $ts.strongPassword }}</span>
</template>
</MkInput>
<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 #prefix><i class="fas fa-lock"></i></template>
<template #prefix><i class="ti ti-lock"></i></template>
<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 == '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>
</MkInput>
<MkSwitch v-if="meta.tosUrl" v-model="ToSAgreement" class="_formBlock tou">

View File

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

View File

@ -23,7 +23,7 @@
</div>
</button>
<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>
<span>{{ $ts._visibility.specified }}</span>
<span>{{ $ts._visibility.specifiedDescription }}</span>

View File

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

View File

@ -3,7 +3,7 @@
<transition :name="$store.state.animation ? 'zoom' : ''" appear>
<div v-show="loaded" class="mjndxjch">
<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-else-if="serverIsDead">{{ i18n.ts.serverIsDead }}</p>
<template v-else>
@ -55,7 +55,7 @@ function reload() {
defineExpose({
[symbols.PAGE_INFO]: {
title: i18n.ts.error,
icon: 'fas fa-exclamation-triangle',
icon: 'ti ti-alert-triangle',
},
});
</script>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -38,7 +38,7 @@
<!--<XMetrics/>-->
<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="number _panel">
<div class="label">Misskey</div>

View File

@ -5,7 +5,7 @@
<div class="status">
<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 class="fas fa-clock icon requesting"></i>
<i v-else class="ti ti-clock icon requesting"></i>
<span>{{ $t(`_relayStatus.${relay.status}`) }}</span>
</div>
<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({
[symbols.PAGE_INFO]: {
title: i18n.ts.security,
icon: 'fas fa-lock',
icon: 'ti ti-lock',
bg: 'var(--bg)',
}
});

View File

@ -21,7 +21,7 @@
</FormInput>
<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>
</FormInput>
</FormSplit>
@ -66,7 +66,7 @@
</FormInput>
<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 #caption>#RRGGBB</template>
</FormInput>

View File

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

View File

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

View File

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

View File

@ -11,7 +11,7 @@
</div>
<div :style="{ backgroundImage: channel.bannerUrl ? `url(${channel.bannerUrl})` : null }" class="banner">
<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>
<div class="fade"></div>
@ -56,7 +56,7 @@ export default defineComponent({
return {
[symbols.PAGE_INFO]: computed(() => this.channel ? {
title: this.channel.name,
icon: 'fas fa-satellite-dish',
icon: 'ti ti-satellite-dish',
bg: 'var(--bg)',
actions: [...(this.$i && this.$i.id === this.channel.userId ? [{
icon: 'ti ti-cog',

View File

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

View File

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

View File

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

View File

@ -8,7 +8,7 @@
<div v-if="tab === 'explore'">
<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">
<div class="vfpdbgtk">
<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="description"><Mfm :text="post.description"/></div>
<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 class="actions">
<div class="like">
@ -35,7 +35,7 @@
</div>
<MkAd :prefer="['horizontal', 'horizontal-big']"/>
<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">
<div class="sdrarzaf">
<MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/>

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,6 @@
<template>
<div class="pemppnzi _block"
<div
class="pemppnzi _block"
@dragover.stop="onDragover"
@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>
</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"/>
</div>
</template>
@ -25,12 +26,12 @@
import { defineComponent, defineAsyncComponent } from 'vue';
import insertTextAtCursor from 'insert-text-at-cursor';
import autosize from 'autosize';
import { throttle } from 'throttle-debounce';
import { formatTimeString } from '@/scripts/format-time-string';
import { selectFile } from '@/scripts/select-file';
import * as os from '@/os';
import { stream } from '@/stream';
import { Autocomplete } from '@/scripts/autocomplete';
import { throttle } from 'throttle-debounce';
import { uploadFile } from '@/scripts/upload';
export default defineComponent({
@ -63,7 +64,7 @@ export default defineComponent({
},
room(): any {
return this.$parent;
}
},
},
watch: {
text() {
@ -71,7 +72,7 @@ export default defineComponent({
},
file() {
this.saveDraft();
}
},
},
mounted() {
autosize(this.$refs.text);
@ -103,7 +104,7 @@ export default defineComponent({
if (items[0].kind === 'file') {
os.alert({
type: 'error',
text: this.$ts.onlyOneFileCanBeAttached
text: this.$ts.onlyOneFileCanBeAttached,
});
}
}
@ -128,7 +129,7 @@ export default defineComponent({
evt.preventDefault();
os.alert({
type: 'error',
text: this.$ts.onlyOneFileCanBeAttached
text: this.$ts.onlyOneFileCanBeAttached,
});
return;
}
@ -175,7 +176,7 @@ export default defineComponent({
userId: this.user ? this.user.id : undefined,
groupId: this.group ? this.group.id : undefined,
text: this.text ? this.text : undefined,
fileId: this.file ? this.file.id : undefined
fileId: this.file ? this.file.id : undefined,
}).then(message => {
this.clear();
}).catch(err => {
@ -198,8 +199,8 @@ export default defineComponent({
updatedAt: new Date(),
data: {
text: this.text,
file: this.file
}
file: this.file,
},
};
localStorage.setItem('message_drafts', JSON.stringify(drafts));
@ -215,8 +216,8 @@ export default defineComponent({
async insertEmoji(ev) {
os.openEmojiPicker(ev.currentTarget ?? ev.target, {}, this.$refs.text);
}
}
},
},
});
</script>

View File

@ -6,7 +6,7 @@
<div class="_content mk-messaging-room">
<div class="body">
<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>
<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 }}
@ -79,7 +79,7 @@ const Component = defineComponent({
},
} : {
title: this.group.name,
icon: 'fas fa-users',
icon: 'ti ti-users',
action: {
icon: 'ti ti-dots',
handler: this.menu,

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -116,7 +116,7 @@ export default defineComponent({
computed: {
icon(): any {
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;
},
typeText(): any {

View File

@ -47,7 +47,7 @@
</div>
<MkAd :prefer="['horizontal', 'horizontal-big']"/>
<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">
<MkPagePreview v-for="page in items" :key="page.id" :page="page" class="_gap"/>
</MkPagination>

View File

@ -2,7 +2,7 @@
<MkSpacer v-if="token" :content-max="700" :margin-min="16" :margin-max="32">
<div class="_formRoot">
<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>
</FormInput>
@ -44,7 +44,7 @@ onMounted(() => {
defineExpose({
[symbols.PAGE_INFO]: {
title: i18n.ts.resetPassword,
icon: 'fas fa-lock',
icon: 'ti ti-lock',
bg: 'var(--bg)',
},
});

View File

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

View File

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

View File

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

View File

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

View File

@ -3,7 +3,7 @@
<FormSection>
<template #label>{{ $ts.emailAddress }}</template>
<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-else-if="emailAddress === $i.email && $i.emailVerified" #caption><i class="ti ti-check" style="color: var(--success);"></i> {{ $ts.emailVerified }}</template>
</FormInput>
@ -103,7 +103,7 @@ onMounted(() => {
defineExpose({
[symbols.PAGE_INFO]: {
title: i18n.ts.email,
icon: 'fas fa-envelope',
icon: 'ti ti-mail',
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>
</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>
</FormSection>
<FormSection>
<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="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>
<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="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>
<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="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>
</div>
</template>

View File

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

View File

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

View File

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

View File

@ -10,7 +10,7 @@
<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>
</template>

View File

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

View File

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

View File

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

View File

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

View File

@ -101,7 +101,7 @@ function regenerateToken() {
defineExpose({
[symbols.PAGE_INFO]: {
title: i18n.ts.security,
icon: 'fas fa-lock',
icon: 'ti ti-lock',
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({
note: ColdDeviceStorage.get('sound_note'),

View File

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

View File

@ -9,7 +9,7 @@
</FormInput>
<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>
</FormInput>

View File

@ -9,7 +9,7 @@
</FormInput>
<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>
</FormInput>

View File

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

View File

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

View File

@ -1,6 +1,6 @@
<template>
<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>{{ $ts._tutorial.step1_1 }}</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',
bg: 'var(--bg)',
actions: [{
icon: 'fas fa-list-ul',
icon: 'ti ti-list',
text: i18n.ts.lists,
handler: chooseList,
}, {
icon: 'fas fa-satellite',
icon: 'ti ti-satellite',
text: i18n.ts.antennas,
handler: chooseAntenna,
}, {
icon: 'fas fa-satellite-dish',
icon: 'ti ti-satellite-dish',
text: i18n.ts.channel,
handler: chooseChannel,
}, {

View File

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

View File

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

View File

@ -5,8 +5,8 @@
<div v-size="{ max: [500] }" class="ftskorzw" :class="{ wide: !narrow }">
<div class="main">
<!-- 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.isSilenced"><i class="fas fa-exclamation-triangle" style="margin-right: 8px;"></i> {{ $ts.userSilenced }}</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="ti ti-alert-triangle" style="margin-right: 8px;"></i> {{ $ts.userSilenced }}</div> -->
<div class="profile">
<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 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.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>
</div>
</div>
@ -38,7 +38,7 @@
<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 && 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>
</div>
</div>
@ -177,7 +177,7 @@ export default defineComponent({
data() {
return {
[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}`,
subtitle: `@${getAcct(this.user)}`,
userName: this.user,
@ -195,7 +195,7 @@ export default defineComponent({
}, ...(this.$i && (this.$i.id === this.user.id)) || this.user.publicReactions ? [{
active: this.page === 'reactions',
title: this.$ts.reaction,
icon: 'fas fa-laugh',
icon: 'ti ti-mood-happy',
onClick: () => { this.mkNav.push('/@' + getAcct(this.user) + '/reactions'); },
}] : [], {
active: this.page === 'clips',

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
<template>
<XColumn :func="{ handler: setAntenna, title: $ts.selectAntenna }" :column="column" :is-stacked="isStacked" @parent-focus="$event => emit('parent-focus', $event)">
<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>
<XTimeline v-if="column.antennaId" ref="timeline" src="antenna" :antenna="column.antennaId" @after="() => emit('loaded')"/>

View File

@ -1,6 +1,6 @@
<template>
<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"/>
</XColumn>

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