diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2018-11-06 01:40:11 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-06 01:40:11 +0900 |
| commit | 9f5dc2c0df0cdba1113697bdd71637a404444065 (patch) | |
| tree | a1d942cf6440f82244ef58ee7ff93103ff70f521 /src/client/app/common | |
| parent | :art: (diff) | |
| download | misskey-9f5dc2c0df0cdba1113697bdd71637a404444065.tar.gz misskey-9f5dc2c0df0cdba1113697bdd71637a404444065.tar.bz2 misskey-9f5dc2c0df0cdba1113697bdd71637a404444065.zip | |
[WIP] Use FontAwesome Component for Vue (#3127)
* wip
* Rename
* Clean up
* Clean up
* wip
* wip
* Enable tree shaking
* :v:
* :v:
* wip
* wip
* Clean up
Diffstat (limited to 'src/client/app/common')
44 files changed, 161 insertions, 156 deletions
diff --git a/src/client/app/common/views/components/api-settings.vue b/src/client/app/common/views/components/api-settings.vue index e7cc6e7a88..15b2d00851 100644 --- a/src/client/app/common/views/components/api-settings.vue +++ b/src/client/app/common/views/components/api-settings.vue @@ -1,6 +1,6 @@ <template> <ui-card> - <div slot="title">%fa:key% API</div> + <div slot="title"><fa icon="key"/> API</div> <section class="fit-top"> <ui-input :value="$store.state.i.token" readonly> @@ -9,11 +9,11 @@ <p>%i18n:@intro%</p> <ui-info warn>%i18n:@caution%</ui-info> <p>%i18n:@regeneration-of-token%</p> - <ui-button @click="regenerateToken">%fa:sync-alt% %i18n:@regenerate-token%</ui-button> + <ui-button @click="regenerateToken"><fa icon="sync-alt"/> %i18n:@regenerate-token%</ui-button> </section> <section> - <header>%fa:terminal% %i18n:@console.title%</header> + <header><fa icon="terminal"/> %i18n:@console.title%</header> <ui-input v-model="endpoint"> <span>%i18n:@console.endpoint%</span> </ui-input> @@ -22,7 +22,7 @@ </ui-textarea> <ui-button @click="send" :disabled="sending"> <template v-if="sending">%i18n:@console.sending%</template> - <template v-else>%fa:paper-plane% %i18n:@console.send%</template> + <template v-else><fa icon="paper-plane"/> %i18n:@console.send%</template> </ui-button> <ui-textarea v-if="res" v-model="res" readonly tall> <span>%i18n:@console.response%</span> diff --git a/src/client/app/common/views/components/connect-failed.troubleshooter.vue b/src/client/app/common/views/components/connect-failed.troubleshooter.vue index f64cae6b4b..544bb7eaa2 100644 --- a/src/client/app/common/views/components/connect-failed.troubleshooter.vue +++ b/src/client/app/common/views/components/connect-failed.troubleshooter.vue @@ -1,35 +1,35 @@ <template> <div class="troubleshooter"> <div class="body"> - <h1>%fa:wrench%%i18n:@title%</h1> + <h1><fa icon="wrench"/>%i18n:@title%</h1> <div> <p :data-wip="network == null"> <template v-if="network != null"> - <template v-if="network">%fa:check%</template> - <template v-if="!network">%fa:times%</template> + <template v-if="network"><fa icon="check"/></template> + <template v-if="!network"><fa icon="times"/></template> </template> {{ network == null ? '%i18n:@checking-network%' : '%i18n:@network%' }}<mk-ellipsis v-if="network == null"/> </p> <p v-if="network == true" :data-wip="internet == null"> <template v-if="internet != null"> - <template v-if="internet">%fa:check%</template> - <template v-if="!internet">%fa:times%</template> + <template v-if="internet"><fa icon="check"/></template> + <template v-if="!internet"><fa icon="times"/></template> </template> {{ internet == null ? '%i18n:@checking-internet%' : '%i18n:@internet%' }}<mk-ellipsis v-if="internet == null"/> </p> <p v-if="internet == true" :data-wip="server == null"> <template v-if="server != null"> - <template v-if="server">%fa:check%</template> - <template v-if="!server">%fa:times%</template> + <template v-if="server"><fa icon="check"/></template> + <template v-if="!server"><fa icon="times"/></template> </template> {{ server == null ? '%i18n:@checking-server%' : '%i18n:@server%' }}<mk-ellipsis v-if="server == null"/> </p> </div> <p v-if="!end">%i18n:@finding%<mk-ellipsis/></p> - <p v-if="network === false"><b>%fa:exclamation-triangle%%i18n:@no-network%</b><br>%i18n:@no-network-desc%</p> - <p v-if="internet === false"><b>%fa:exclamation-triangle%%i18n:@no-internet%</b><br>%i18n:@no-internet-desc%</p> - <p v-if="server === false"><b>%fa:exclamation-triangle%%i18n:@no-server%</b><br>%i18n:@no-server-desc%</p> - <p v-if="server === true" class="success"><b>%fa:info-circle%%i18n:@success%</b><br>%i18n:@success-desc%</p> + <p v-if="network === false"><b><fa icon="exclamation-triangle"/>%i18n:@no-network%</b><br>%i18n:@no-network-desc%</p> + <p v-if="internet === false"><b><fa icon="exclamation-triangle"/>%i18n:@no-internet%</b><br>%i18n:@no-internet-desc%</p> + <p v-if="server === false"><b><fa icon="exclamation-triangle"/>%i18n:@no-server%</b><br>%i18n:@no-server-desc%</p> + <p v-if="server === true" class="success"><b><fa icon="info-circle"/>%i18n:@success%</b><br>%i18n:@success-desc%</p> </div> <footer> <a href="/assets/flush.html">%i18n:@flush%</a> | <a href="/assets/version.html">%i18n:@set-version%</a> @@ -100,7 +100,7 @@ export default Vue.extend({ color #444 border-bottom solid 1px #eee - > [data-fa] + > [data-icon] margin-right 0.25em > div @@ -115,7 +115,7 @@ export default Vue.extend({ &[data-wip] color #888 - > [data-fa] + > [data-icon] margin-right 0.25em &.times @@ -132,7 +132,7 @@ export default Vue.extend({ border-top solid 1px #eee > b - > [data-fa] + > [data-icon] margin-right 0.25em &.success diff --git a/src/client/app/common/views/components/connect-failed.vue b/src/client/app/common/views/components/connect-failed.vue index 36cae05665..8567f9a15c 100644 --- a/src/client/app/common/views/components/connect-failed.vue +++ b/src/client/app/common/views/components/connect-failed.vue @@ -1,6 +1,6 @@ <template> <div class="mk-connect-failed"> - <img src="data:image/jpeg;base64,%base64:/assets/error.jpg%" alt=""/> + <img src="https://raw.githubusercontent.com/syuilo/misskey/develop/src/client/assets/error.jpg" alt=""/> <h1>%i18n:@title%</h1> <p class="text"> <span>{{ '%i18n:@description%'.substr(0, '%i18n:@description%'.indexOf('{')) }}</span> diff --git a/src/client/app/common/views/components/drive-settings.vue b/src/client/app/common/views/components/drive-settings.vue index 3b45a68730..1d0da3a53f 100644 --- a/src/client/app/common/views/components/drive-settings.vue +++ b/src/client/app/common/views/components/drive-settings.vue @@ -1,6 +1,6 @@ <template> <ui-card> - <div slot="title">%fa:cloud% %i18n:common.drive%</div> + <div slot="title"><fa icon="cloud"/> %i18n:common.drive%</div> <section v-if="!fetching" class="juakhbxthdewydyreaphkepoxgxvfogn"> <div class="meter"><div :style="meterStyle"></div></div> diff --git a/src/client/app/common/views/components/error.vue b/src/client/app/common/views/components/error.vue index 7381cf5376..902e4f31d4 100644 --- a/src/client/app/common/views/components/error.vue +++ b/src/client/app/common/views/components/error.vue @@ -1,6 +1,6 @@ <template> <div class="wjqjnyhzogztorhrdgcpqlkxhkmuetgj"> - <p>%fa:exclamation-triangle% %i18n:common.error.title%</p> + <p><fa icon="exclamation-triangle"/> %i18n:common.error.title%</p> <ui-button @click="() => $emit('retry')">%i18n:common.error.retry%</ui-button> </div> </template> diff --git a/src/client/app/common/views/components/file-type-icon.vue b/src/client/app/common/views/components/file-type-icon.vue index b7e868d1f7..3a9fe768d1 100644 --- a/src/client/app/common/views/components/file-type-icon.vue +++ b/src/client/app/common/views/components/file-type-icon.vue @@ -1,6 +1,6 @@ <template> <span class="mk-file-type-icon"> - <template v-if="kind == 'image'">%fa:file-image%</template> + <template v-if="kind == 'image'"><fa icon="file-image"/></template> </span> </template> diff --git a/src/client/app/common/views/components/games/reversi/reversi.game.vue b/src/client/app/common/views/components/games/reversi/reversi.game.vue index 608e1c182d..b2cf8b4d9d 100644 --- a/src/client/app/common/views/components/games/reversi/reversi.game.vue +++ b/src/client/app/common/views/components/games/reversi/reversi.game.vue @@ -1,6 +1,6 @@ <template> <div class="xqnhankfuuilcwvhgsopeqncafzsquya"> - <button class="go-index" v-if="selfNav" @click="goIndex">%fa:arrow-left%</button> + <button class="go-index" v-if="selfNav" @click="goIndex"><fa icon="arrow-left"/></button> <header><b><router-link :to="blackUser | userPage">{{ blackUser | userName }}</router-link></b>(%i18n:common.reversi.black%) vs <b><router-link :to="whiteUser | userPage">{{ whiteUser | userName }}</router-link></b>(%i18n:common.reversi.white%)</header> <div style="overflow: hidden; line-height: 28px;"> @@ -51,13 +51,13 @@ <div class="player" v-if="game.isEnded"> <div> - <button @click="logPos = 0" :disabled="logPos == 0">%fa:angle-double-left%</button> - <button @click="logPos--" :disabled="logPos == 0">%fa:angle-left%</button> + <button @click="logPos = 0" :disabled="logPos == 0"><fa icon="angle-double-left"/></button> + <button @click="logPos--" :disabled="logPos == 0"><fa icon="angle-left"/></button> </div> <span>{{ logPos }} / {{ logs.length }}</span> <div> - <button @click="logPos++" :disabled="logPos == logs.length">%fa:angle-right%</button> - <button @click="logPos = logs.length" :disabled="logPos == logs.length">%fa:angle-double-right%</button> + <button @click="logPos++" :disabled="logPos == logs.length"><fa icon="angle-right"/></button> + <button @click="logPos = logs.length" :disabled="logPos == logs.length"><fa icon="angle-double-right"/></button> </div> </div> diff --git a/src/client/app/common/views/components/games/reversi/reversi.room.vue b/src/client/app/common/views/components/games/reversi/reversi.room.vue index 29c6794f69..7571d69af9 100644 --- a/src/client/app/common/views/components/games/reversi/reversi.room.vue +++ b/src/client/app/common/views/components/games/reversi/reversi.room.vue @@ -17,13 +17,13 @@ </header> <div> - <div class="random" v-if="game.settings.map == null">%fa:dice%</div> + <div class="random" v-if="game.settings.map == null"><fa icon="dice"/></div> <div class="board" v-else :style="{ 'grid-template-rows': `repeat(${ game.settings.map.length }, 1fr)`, 'grid-template-columns': `repeat(${ game.settings.map[0].length }, 1fr)` }"> <div v-for="(x, i) in game.settings.map.join('')" :data-none="x == ' '" @click="onPixelClick(i, x)"> - <template v-if="x == 'b'"><template v-if="$store.state.device.darkmode">%fa:circle R%</template><template v-else>%fa:circle%</template></template> - <template v-if="x == 'w'"><template v-if="$store.state.device.darkmode">%fa:circle%</template><template v-else>%fa:circle R%</template></template> + <template v-if="x == 'b'"><template v-if="$store.state.device.darkmode"><fa :icon="['far', 'circle']"/></template><template v-else><fa icon="circle"/></template></template> + <template v-if="x == 'w'"><template v-if="$store.state.device.darkmode"><fa :icon="['far', 'circle']"/></template><template v-else><fa icon="circle"/></template></template> </div> </div> </div> diff --git a/src/client/app/common/views/components/google.vue b/src/client/app/common/views/components/google.vue index ac71a5e56d..1d710bc3c9 100644 --- a/src/client/app/common/views/components/google.vue +++ b/src/client/app/common/views/components/google.vue @@ -1,7 +1,7 @@ <template> <div class="mk-google"> <input type="search" v-model="query" :placeholder="q"> - <button @click="search">%fa:search% %i18n:common.search%</button> + <button @click="search"><fa icon="search"/> %i18n:common.search%</button> </div> </template> diff --git a/src/client/app/common/views/components/media-banner.vue b/src/client/app/common/views/components/media-banner.vue index 0f5981d3c4..00a7f22e45 100644 --- a/src/client/app/common/views/components/media-banner.vue +++ b/src/client/app/common/views/components/media-banner.vue @@ -1,7 +1,7 @@ <template> <div class="mk-media-banner"> <div class="sensitive" v-if="media.isSensitive && hide" @click="hide = false"> - <span class="icon">%fa:exclamation-triangle%</span> + <span class="icon"><fa icon="exclamation-triangle"/></span> <b>%i18n:@sensitive%</b> <span>%i18n:@click-to-show%</span> </div> @@ -18,7 +18,7 @@ :title="media.name" :download="media.name" > - <span class="icon">%fa:download%</span> + <span class="icon"><fa icon="download"/></span> <b>{{ media.name }}</b> </a> </div> diff --git a/src/client/app/common/views/components/menu.vue b/src/client/app/common/views/components/menu.vue index be2c03f54c..e085bf4bb9 100644 --- a/src/client/app/common/views/components/menu.vue +++ b/src/client/app/common/views/components/menu.vue @@ -4,7 +4,9 @@ <div class="popover" :class="{ hukidasi }" ref="popover"> <template v-for="item, i in items"> <div v-if="item === null"></div> - <button v-if="item" @click="clicked(item.action)" v-html="item.icon ? item.icon + ' ' + item.text : item.text" :tabindex="i"></button> + <button v-if="item" @click="clicked(item.action)" :tabindex="i"> + <fa v-if="item.icon" :icon="item.icon"/>{{ item.text }} + </button> </template> </div> </div> @@ -188,6 +190,9 @@ export default Vue.extend({ color var(--primaryForeground) background var(--primaryDarken10) + > [data-icon] + margin-right 4px + > div margin 8px 0 height 1px diff --git a/src/client/app/common/views/components/messaging-room.form.vue b/src/client/app/common/views/components/messaging-room.form.vue index c93fd7f78d..3bd04bdbce 100644 --- a/src/client/app/common/views/components/messaging-room.form.vue +++ b/src/client/app/common/views/components/messaging-room.form.vue @@ -14,13 +14,13 @@ <div class="file" @click="file = null" v-if="file">{{ file.name }}</div> <mk-uploader ref="uploader" @uploaded="onUploaded"/> <button class="send" @click="send" :disabled="!canSend || sending" title="%i18n:@send%"> - <template v-if="!sending">%fa:paper-plane%</template><template v-if="sending">%fa:spinner .spin%</template> + <template v-if="!sending"><fa icon="paper-plane"/></template><template v-if="sending"><fa icon="spinner .spin"/></template> </button> <button class="attach-from-local" @click="chooseFile" title="%i18n:@attach-from-local%"> - %fa:upload% + <fa icon="upload"/> </button> <button class="attach-from-drive" @click="chooseFileFromDrive" title="%i18n:@attach-from-drive%"> - %fa:R folder-open% + <fa :icon="['far', 'folder-open']"/> </button> <input ref="file" type="file" @change="onChangeFile"/> </div> diff --git a/src/client/app/common/views/components/messaging-room.message.vue b/src/client/app/common/views/components/messaging-room.message.vue index 77bf55c52c..08540468ce 100644 --- a/src/client/app/common/views/components/messaging-room.message.vue +++ b/src/client/app/common/views/components/messaging-room.message.vue @@ -24,7 +24,7 @@ <footer> <span class="read" v-if="isMe && message.isRead">%i18n:@is-read%</span> <mk-time :time="message.createdAt"/> - <template v-if="message.is_edited">%fa:pencil-alt%</template> + <template v-if="message.is_edited"><fa icon="pencil-alt"/></template> </footer> </div> </div> @@ -179,7 +179,7 @@ export default Vue.extend({ font-size 10px color var(--messagingRoomMessageInfo) - > [data-fa] + > [data-icon] margin-left 4px &:not([data-is-me]) diff --git a/src/client/app/common/views/components/messaging-room.vue b/src/client/app/common/views/components/messaging-room.vue index d982b10a25..577617c49a 100644 --- a/src/client/app/common/views/components/messaging-room.vue +++ b/src/client/app/common/views/components/messaging-room.vue @@ -4,11 +4,11 @@ @drop.prevent.stop="onDrop" > <div class="body"> - <p class="init" v-if="init">%fa:spinner .spin%%i18n:common.loading%</p> - <p class="empty" v-if="!init && messages.length == 0">%fa:info-circle%%i18n:@empty%</p> - <p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages">%fa:flag%%i18n:@no-history%</p> + <p class="init" v-if="init"><fa icon="spinner .spin"/>%i18n:common.loading%</p> + <p class="empty" v-if="!init && messages.length == 0"><fa icon="info-circle"/>%i18n:@empty%</p> + <p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages"><fa icon="flag"/>%i18n:@no-history%</p> <button class="more" :class="{ fetching: fetchingMoreMessages }" v-if="existMoreMessages" @click="fetchMoreMessages" :disabled="fetchingMoreMessages"> - <template v-if="fetchingMoreMessages">%fa:spinner .pulse .fw%</template>{{ fetchingMoreMessages ? '%i18n:common.loading%' : '%i18n:@more%' }} + <template v-if="fetchingMoreMessages"><fa icon="spinner .pulse" fixed-width/></template>{{ fetchingMoreMessages ? '%i18n:common.loading%' : '%i18n:@more%' }} </button> <template v-for="(message, i) in _messages"> <x-message :message="message" :key="message.id"/> @@ -20,7 +20,7 @@ <footer> <transition name="fade"> <div class="new-message" v-show="showIndicator"> - <button @click="onIndicatorClick">%fa:arrow-circle-down%%i18n:@new-message%</button> + <button @click="onIndicatorClick"><i><fa icon="arrow-circle-down"/></i>%i18n:@new-message%</button> </div> </transition> <x-form :user="user" ref="form"/> @@ -280,7 +280,7 @@ export default Vue.extend({ color var(--messagingRoomInfo) opacity 0.5 - [data-fa] + [data-icon] margin-right 4px > .no-history @@ -292,7 +292,7 @@ export default Vue.extend({ color var(--messagingRoomInfo) opacity 0.5 - [data-fa] + [data-icon] margin-right 4px > .more @@ -313,7 +313,7 @@ export default Vue.extend({ &.fetching cursor wait - > [data-fa] + > [data-icon] margin-right 4px > .message @@ -381,7 +381,7 @@ export default Vue.extend({ &:active background var(--primaryDarken10) - > [data-fa] + > i position absolute top 0 left 10px diff --git a/src/client/app/common/views/components/messaging.vue b/src/client/app/common/views/components/messaging.vue index f5b5e232f6..fe6c001c87 100644 --- a/src/client/app/common/views/components/messaging.vue +++ b/src/client/app/common/views/components/messaging.vue @@ -2,7 +2,7 @@ <div class="mk-messaging" :data-compact="compact"> <div class="search" v-if="!compact" :style="{ top: headerTop + 'px' }"> <div class="form"> - <label for="search-input">%fa:search%</label> + <label for="search-input"><i><fa icon="search"/></i></label> <input v-model="q" type="search" @input="search" @keydown="onSearchKeydown" placeholder="%i18n:@search-user%"/> </div> <div class="result"> @@ -45,7 +45,7 @@ </template> </div> <p class="no-history" v-if="!fetching && messages.length == 0">%i18n:@no-history%</p> - <p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> + <p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:common.loading%<mk-ellipsis/></p> </div> </template> @@ -213,7 +213,7 @@ export default Vue.extend({ width 38px pointer-events none - > [data-fa] + > i display block position absolute top 0 @@ -418,7 +418,7 @@ export default Vue.extend({ text-align center color #aaa - > [data-fa] + > [data-icon] margin-right 4px // TODO: element base media query diff --git a/src/client/app/common/views/components/mute-and-block.vue b/src/client/app/common/views/components/mute-and-block.vue index 8aac74c4e2..e4627726f2 100644 --- a/src/client/app/common/views/components/mute-and-block.vue +++ b/src/client/app/common/views/components/mute-and-block.vue @@ -1,6 +1,6 @@ <template> <ui-card> - <div slot="title">%fa:ban% %i18n:@mute-and-block%</div> + <div slot="title"><fa icon="ban"/> %i18n:@mute-and-block%</div> <section> <header>%i18n:@mute%</header> diff --git a/src/client/app/common/views/components/nav.vue b/src/client/app/common/views/components/nav.vue index 27e66358e4..5ae4486c08 100644 --- a/src/client/app/common/views/components/nav.vue +++ b/src/client/app/common/views/components/nav.vue @@ -8,7 +8,7 @@ <i>・</i> <a href="/dev">%i18n:@develop%</a> <i>・</i> - <a href="https://twitter.com/misskey_xyz" target="_blank">Follow us on %fa:B twitter%</a> + <a href="https://twitter.com/misskey_xyz" target="_blank">Follow us on <fa :icon="['fab', 'twitter']"/></a> </span> </template> diff --git a/src/client/app/common/views/components/note-header.vue b/src/client/app/common/views/components/note-header.vue index 5966a5c376..4a94e5b6e9 100644 --- a/src/client/app/common/views/components/note-header.vue +++ b/src/client/app/common/views/components/note-header.vue @@ -6,18 +6,18 @@ <span class="is-bot" v-if="note.user.isBot">bot</span> <span class="is-cat" v-if="note.user.isCat">cat</span> <span class="username"><mk-acct :user="note.user"/></span> - <span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%">%fa:star%</span> + <span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%"><fa icon="star"/></span> <div class="info"> <span class="app" v-if="note.app && !mini">via <b>{{ note.app.name }}</b></span> - <span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span> + <span class="mobile" v-if="note.viaMobile"><fa icon="mobile-alt"/></span> <router-link class="created-at" :to="note | notePage"> <mk-time :time="note.createdAt"/> </router-link> <span class="visibility" v-if="note.visibility != 'public'"> - <template v-if="note.visibility == 'home'">%fa:home%</template> - <template v-if="note.visibility == 'followers'">%fa:unlock%</template> - <template v-if="note.visibility == 'specified'">%fa:envelope%</template> - <template v-if="note.visibility == 'private'">%fa:lock%</template> + <template v-if="note.visibility == 'home'"><fa icon="home"/></template> + <template v-if="note.visibility == 'followers'"><fa icon="unlock"/></template> + <template v-if="note.visibility == 'specified'"><fa icon="envelope"/></template> + <template v-if="note.visibility == 'private'"><fa icon="lock"/></template> </span> </div> </header> diff --git a/src/client/app/common/views/components/note-menu.vue b/src/client/app/common/views/components/note-menu.vue index 6b96974d5b..524a3d8fec 100644 --- a/src/client/app/common/views/components/note-menu.vue +++ b/src/client/app/common/views/components/note-menu.vue @@ -15,18 +15,18 @@ export default Vue.extend({ computed: { items() { const items = [{ - icon: '%fa:info-circle%', + icon: 'info-circle', text: '%i18n:@detail%', action: this.detail }, { - icon: '%fa:link%', + icon: 'link', text: '%i18n:@copy-link%', action: this.copyLink }]; if (this.note.uri) { items.push({ - icon: '%fa:external-link-square-alt%', + icon: 'external-link-square-alt', text: '%i18n:@remote%', action: () => { window.open(this.note.uri, '_blank'); @@ -38,13 +38,13 @@ export default Vue.extend({ if (this.note.isFavorited) { items.push({ - icon: '%fa:star%', + icon: 'star', text: '%i18n:@unfavorite%', action: this.unfavorite }); } else { items.push({ - icon: '%fa:star%', + icon: 'star', text: '%i18n:@favorite%', action: this.favorite }); @@ -53,13 +53,13 @@ export default Vue.extend({ if (this.note.userId == this.$store.state.i.id) { if ((this.$store.state.i.pinnedNoteIds || []).includes(this.note.id)) { items.push({ - icon: '%fa:thumbtack%', + icon: 'thumbtack', text: '%i18n:@unpin%', action: this.unpin }); } else { items.push({ - icon: '%fa:thumbtack%', + icon: 'thumbtack', text: '%i18n:@pin%', action: this.pin }); @@ -69,7 +69,7 @@ export default Vue.extend({ if (this.note.userId == this.$store.state.i.id || this.$store.state.i.isAdmin) { items.push(null); items.push({ - icon: '%fa:trash-alt R%', + icon: ['far', 'trash-alt'], text: '%i18n:@delete%', action: this.del }); diff --git a/src/client/app/common/views/components/poll-editor.vue b/src/client/app/common/views/components/poll-editor.vue index b5c57d48a5..2df84a2f88 100644 --- a/src/client/app/common/views/components/poll-editor.vue +++ b/src/client/app/common/views/components/poll-editor.vue @@ -1,19 +1,19 @@ <template> <div class="mk-poll-editor"> <p class="caution" v-if="choices.length < 2"> - %fa:exclamation-triangle%%i18n:@no-only-one-choice% + <fa icon="exclamation-triangle"/>%i18n:@no-only-one-choice% </p> <ul ref="choices"> <li v-for="(choice, i) in choices"> <input :value="choice" @input="onInput(i, $event)" :placeholder="'%i18n:@choice-n%'.replace('{}', i + 1)"> <button @click="remove(i)" title="%i18n:@remove%"> - %fa:times% + <fa icon="times"/> </button> </li> </ul> <button class="add" v-if="choices.length < 10" @click="add">%i18n:@add%</button> <button class="destroy" @click="destroy" title="%i18n:@destroy%"> - %fa:times% + <fa icon="times"/> </button> </div> </template> @@ -76,7 +76,7 @@ export default Vue.extend({ font-size 0.8em color #f00 - > [data-fa] + > [data-icon] margin-right 4px > ul diff --git a/src/client/app/common/views/components/poll.vue b/src/client/app/common/views/components/poll.vue index 0dc2622f9b..0550fd3761 100644 --- a/src/client/app/common/views/components/poll.vue +++ b/src/client/app/common/views/components/poll.vue @@ -4,7 +4,7 @@ <li v-for="choice in poll.choices" :key="choice.id" @click="vote(choice.id)" :class="{ voted: choice.voted }" :title="!isVoted ? '%i18n:@vote-to%'.replace('{}', choice.text) : ''"> <div class="backdrop" :style="{ 'width': (showResult ? (choice.votes / total * 100) : 0) + '%' }"></div> <span> - <template v-if="choice.isVoted">%fa:check%</template> + <template v-if="choice.isVoted"><fa icon="check"/></template> <span>{{ choice.text }}</span> <span class="votes" v-if="showResult">({{ '%i18n:@vote-count%'.replace('{}', choice.votes) }})</span> </span> @@ -100,7 +100,7 @@ export default Vue.extend({ transition width 1s ease > span - > [data-fa] + > [data-icon] margin-right 4px > .votes diff --git a/src/client/app/common/views/components/profile-editor.vue b/src/client/app/common/views/components/profile-editor.vue index 10bdc0b579..4e324b08d3 100644 --- a/src/client/app/common/views/components/profile-editor.vue +++ b/src/client/app/common/views/components/profile-editor.vue @@ -1,6 +1,6 @@ <template> <ui-card> - <div slot="title">%fa:user% %i18n:@title%</div> + <div slot="title"><fa icon="user"/> %i18n:@title%</div> <section class="fit-top"> <ui-form :disabled="saving"> @@ -16,12 +16,12 @@ <ui-input v-model="location"> <span>%i18n:@location%</span> - <span slot="prefix">%fa:map-marker-alt%</span> + <span slot="prefix"><fa icon="map-marker-alt"/></span> </ui-input> <ui-input v-model="birthday" type="date"> <span>%i18n:@birthday%</span> - <span slot="prefix">%fa:birthday-cake%</span> + <span slot="prefix"><fa icon="birthday-cake"/></span> </ui-input> <ui-textarea v-model="description" :max="500"> @@ -30,13 +30,13 @@ <ui-input type="file" @change="onAvatarChange"> <span>%i18n:@avatar%</span> - <span slot="icon">%fa:image%</span> + <span slot="icon"><fa icon="image"/></span> <span slot="text" v-if="avatarUploading">%i18n:@uploading%<mk-ellipsis/></span> </ui-input> <ui-input type="file" @change="onBannerChange"> <span>%i18n:@banner%</span> - <span slot="icon">%fa:image%</span> + <span slot="icon"><fa icon="image"/></span> <span slot="text" v-if="bannerUploading">%i18n:@uploading%<mk-ellipsis/></span> </ui-input> diff --git a/src/client/app/common/views/components/signin.vue b/src/client/app/common/views/components/signin.vue index 0b81daf176..cd24cdd8d0 100644 --- a/src/client/app/common/views/components/signin.vue +++ b/src/client/app/common/views/components/signin.vue @@ -8,7 +8,7 @@ </ui-input> <ui-input v-model="password" type="password" required styl="fill"> <span>%i18n:@password%</span> - <span slot="prefix">%fa:lock%</span> + <span slot="prefix"><fa icon="lock"/></span> </ui-input> <ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required styl="fill"/> <ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button> diff --git a/src/client/app/common/views/components/signup.vue b/src/client/app/common/views/components/signup.vue index 8e06b13491..bc023b3393 100644 --- a/src/client/app/common/views/components/signup.vue +++ b/src/client/app/common/views/components/signup.vue @@ -3,36 +3,36 @@ <template v-if="meta"> <ui-input v-if="meta.disableRegistration" v-model="invitationCode" type="text" :autocomplete="Math.random()" spellcheck="false" required styl="fill"> <span>%i18n:@invitation-code%</span> - <span slot="prefix">%fa:id-card-alt%</span> + <span slot="prefix"><fa icon="id-card-alt"/></span> <p slot="text" v-html="'%i18n:@invitation-info%'.replace('{}', meta.maintainer.url)"></p> </ui-input> <ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" :autocomplete="Math.random()" spellcheck="false" required @input="onChangeUsername" styl="fill"> <span>%i18n:@username%</span> <span slot="prefix">@</span> <span slot="suffix">@{{ host }}</span> - <p slot="text" v-if="usernameState == 'wait'" style="color:#999">%fa:spinner .pulse .fw% %i18n:@checking%</p> - <p slot="text" v-if="usernameState == 'ok'" style="color:#3CB7B5">%fa:check .fw% %i18n:@available%</p> - <p slot="text" v-if="usernameState == 'unavailable'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@unavailable%</p> - <p slot="text" v-if="usernameState == 'error'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@error%</p> - <p slot="text" v-if="usernameState == 'invalid-format'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@invalid-format%</p> - <p slot="text" v-if="usernameState == 'min-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-short%</p> - <p slot="text" v-if="usernameState == 'max-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-long%</p> + <p slot="text" v-if="usernameState == 'wait'" style="color:#999"><fa icon="spinner .pulse" fixed-width/> %i18n:@checking%</p> + <p slot="text" v-if="usernameState == 'ok'" style="color:#3CB7B5"><fa icon="check" fixed-width/> %i18n:@available%</p> + <p slot="text" v-if="usernameState == 'unavailable'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> %i18n:@unavailable%</p> + <p slot="text" v-if="usernameState == 'error'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> %i18n:@error%</p> + <p slot="text" v-if="usernameState == 'invalid-format'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> %i18n:@invalid-format%</p> + <p slot="text" v-if="usernameState == 'min-range'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> %i18n:@too-short%</p> + <p slot="text" v-if="usernameState == 'max-range'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> %i18n:@too-long%</p> </ui-input> <ui-input v-model="password" type="password" :autocomplete="Math.random()" required @input="onChangePassword" :with-password-meter="true" styl="fill"> <span>%i18n:@password%</span> - <span slot="prefix">%fa:lock%</span> + <span slot="prefix"><fa icon="lock"/></span> <div slot="text"> - <p slot="text" v-if="passwordStrength == 'low'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@weak-password%</p> - <p slot="text" v-if="passwordStrength == 'medium'" style="color:#3CB7B5">%fa:check .fw% %i18n:@normal-password%</p> - <p slot="text" v-if="passwordStrength == 'high'" style="color:#3CB7B5">%fa:check .fw% %i18n:@strong-password%</p> + <p slot="text" v-if="passwordStrength == 'low'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> %i18n:@weak-password%</p> + <p slot="text" v-if="passwordStrength == 'medium'" style="color:#3CB7B5"><fa icon="check" fixed-width/> %i18n:@normal-password%</p> + <p slot="text" v-if="passwordStrength == 'high'" style="color:#3CB7B5"><fa icon="check" fixed-width/> %i18n:@strong-password%</p> </div> </ui-input> <ui-input v-model="retypedPassword" type="password" :autocomplete="Math.random()" required @input="onChangePasswordRetype" styl="fill"> <span>%i18n:@password% (%i18n:@retype%)</span> - <span slot="prefix">%fa:lock%</span> + <span slot="prefix"><fa icon="lock"/></span> <div slot="text"> - <p slot="text" v-if="passwordRetypeState == 'match'" style="color:#3CB7B5">%fa:check .fw% %i18n:@password-matched%</p> - <p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@password-not-matched%</p> + <p slot="text" v-if="passwordRetypeState == 'match'" style="color:#3CB7B5"><fa icon="check" fixed-width/> %i18n:@password-matched%</p> + <p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> %i18n:@password-not-matched%</p> </div> </ui-input> <div v-if="meta.recaptchaSitekey != null" class="g-recaptcha" :data-sitekey="meta.recaptchaSitekey" style="margin: 16px 0;"></div> diff --git a/src/client/app/common/views/components/stream-indicator.vue b/src/client/app/common/views/components/stream-indicator.vue index 12bf78f130..d639261fdc 100644 --- a/src/client/app/common/views/components/stream-indicator.vue +++ b/src/client/app/common/views/components/stream-indicator.vue @@ -1,15 +1,15 @@ <template> <div class="mk-stream-indicator"> <p v-if="stream.state == 'initializing'"> - %fa:spinner .pulse% + <fa icon="spinner .pulse"/> <span>%i18n:@connecting%<mk-ellipsis/></span> </p> <p v-if="stream.state == 'reconnecting'"> - %fa:spinner .pulse% + <fa icon="spinner .pulse"/> <span>%i18n:@reconnecting%<mk-ellipsis/></span> </p> <p v-if="stream.state == 'connected'"> - %fa:check% + <fa icon="check"/> <span>%i18n:@connected%</span> </p> </div> @@ -80,7 +80,7 @@ export default Vue.extend({ display block margin 0 - > [data-fa] + > [data-icon] margin-right 0.25em </style> diff --git a/src/client/app/common/views/components/tag-cloud.vue b/src/client/app/common/views/components/tag-cloud.vue index 5cc828082f..5a1768828c 100644 --- a/src/client/app/common/views/components/tag-cloud.vue +++ b/src/client/app/common/views/components/tag-cloud.vue @@ -1,7 +1,7 @@ <template> <div class="jtivnzhfwquxpsfidertopbmwmchmnmo"> - <p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> - <p class="empty" v-else-if="tags.length == 0">%fa:exclamation-circle%%i18n:@empty%</p> + <p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:common.loading%<mk-ellipsis/></p> + <p class="empty" v-else-if="tags.length == 0"><fa icon="exclamation-circle"/>%i18n:@empty%</p> <div v-else> <vue-word-cloud :words="tags.slice(0, 20).map(x => [x.name, x.count])" @@ -74,7 +74,7 @@ export default Vue.extend({ text-align center color #aaa - > [data-fa] + > [data-icon] margin-right 4px > div diff --git a/src/client/app/common/views/components/theme.vue b/src/client/app/common/views/components/theme.vue index c1c73b97cd..d4e8d155e9 100644 --- a/src/client/app/common/views/components/theme.vue +++ b/src/client/app/common/views/components/theme.vue @@ -25,7 +25,7 @@ </label> <details class="creator"> - <summary>%fa:palette% %i18n:@create-a-theme%</summary> + <summary><fa icon="palette"/> %i18n:@create-a-theme%</summary> <div> <span>%i18n:@base-theme%:</span> <ui-radio v-model="myThemeBase" value="light">%i18n:@base-theme-light%</ui-radio> @@ -51,23 +51,23 @@ <div style="padding-bottom:8px;">%i18n:@text-color%:</div> <color-picker v-model="myThemeText"/> </div> - <ui-button @click="preview()">%fa:eye% %i18n:@preview-created-theme%</ui-button> - <ui-button primary @click="gen()">%fa:save R% %i18n:@save-created-theme%</ui-button> + <ui-button @click="preview()"><fa icon="eye"/> %i18n:@preview-created-theme%</ui-button> + <ui-button primary @click="gen()"><fa :icon="['far', 'save']"/> %i18n:@save-created-theme%</ui-button> </details> <details> - <summary>%fa:download% %i18n:@install-a-theme%</summary> - <ui-button @click="import_()">%fa:file-import% %i18n:@import%</ui-button> + <summary><fa icon="download"/> %i18n:@install-a-theme%</summary> + <ui-button @click="import_()"><fa icon="file-import"/> %i18n:@import%</ui-button> <input ref="file" type="file" accept=".misskeytheme" style="display:none;" @change="onUpdateImportFile"/> <p>%i18n:@import-by-code%:</p> <ui-textarea v-model="installThemeCode"> <span>%i18n:@theme-code%</span> </ui-textarea> - <ui-button @click="() => install(this.installThemeCode)">%fa:check% %i18n:@install%</ui-button> + <ui-button @click="() => install(this.installThemeCode)"><fa icon="check"/> %i18n:@install%</ui-button> </details> <details> - <summary>%fa:folder-open% %i18n:@manage-themes%</summary> + <summary><fa icon="folder-open"/> %i18n:@manage-themes%</summary> <ui-select v-model="selectedThemeId" placeholder="%i18n:@select-theme%"> <optgroup label="%i18n:@builtin-themes%"> <option v-for="x in builtinThemes" :value="x.id" :key="x.id">{{ x.name }}</option> @@ -89,8 +89,8 @@ <ui-textarea readonly :value="selectedThemeCode"> <span>%i18n:@theme-code%</span> </ui-textarea> - <ui-button @click="export_()" link :download="`${selectedTheme.name}.misskeytheme`" ref="export">%fa:box% %i18n:@export%</ui-button> - <ui-button @click="uninstall()" v-if="!builtinThemes.some(t => t.id == selectedTheme.id)">%fa:trash-alt R% %i18n:@uninstall%</ui-button> + <ui-button @click="export_()" link :download="`${selectedTheme.name}.misskeytheme`" ref="export"><fa icon="box"/> %i18n:@export%</ui-button> + <ui-button @click="uninstall()" v-if="!builtinThemes.some(t => t.id == selectedTheme.id)"><fa :icon="['far', 'trash-alt']"/> %i18n:@uninstall%</ui-button> </template> </details> </div> diff --git a/src/client/app/common/views/components/trends.vue b/src/client/app/common/views/components/trends.vue index 3d36d7449c..ea3f854c6e 100644 --- a/src/client/app/common/views/components/trends.vue +++ b/src/client/app/common/views/components/trends.vue @@ -1,7 +1,7 @@ <template> <div class="csqvmxybqbycalfhkxvyfrgbrdalkaoc"> - <p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> - <p class="empty" v-else-if="stats.length == 0">%fa:exclamation-circle%%i18n:@empty%</p> + <p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:common.loading%<mk-ellipsis/></p> + <p class="empty" v-else-if="stats.length == 0"><fa icon="exclamation-circle"/>%i18n:@empty%</p> <!-- トランジションを有効にするとなぜかメモリリークする --> <transition-group v-else tag="div" name="chart"> <div v-for="stat in stats" :key="stat.tag"> @@ -58,7 +58,7 @@ export default Vue.extend({ color var(--text) opacity 0.7 - > [data-fa] + > [data-icon] margin-right 4px > div diff --git a/src/client/app/common/views/components/ui/info.vue b/src/client/app/common/views/components/ui/info.vue index 3d62a3c7aa..30fd8cb344 100644 --- a/src/client/app/common/views/components/ui/info.vue +++ b/src/client/app/common/views/components/ui/info.vue @@ -1,7 +1,7 @@ <template> <div class="ymxyweixqwsxauxldgpvecjepnwxbylu" :class="{ warn }"> - <i v-if="warn">%fa:exclamation-triangle%</i> - <i v-else>%fa:info-circle%</i> + <i v-if="warn"><fa icon="exclamation-triangle"/></i> + <i v-else><fa icon="info-circle"/></i> <slot></slot> </div> </template> diff --git a/src/client/app/common/views/components/uploader.vue b/src/client/app/common/views/components/uploader.vue index b812064bbb..67ad7ecc99 100644 --- a/src/client/app/common/views/components/uploader.vue +++ b/src/client/app/common/views/components/uploader.vue @@ -3,7 +3,7 @@ <ol v-if="uploads.length > 0"> <li v-for="ctx in uploads" :key="ctx.id"> <div class="img" :style="{ backgroundImage: `url(${ ctx.img })` }"></div> - <p class="name">%fa:spinner .pulse%{{ ctx.name }}</p> + <p class="name"><fa icon="spinner .pulse"/>{{ ctx.name }}</p> <p class="status"> <span class="initing" v-if="ctx.progress == undefined">%i18n:@waiting%<mk-ellipsis/></span> <span class="kb" v-if="ctx.progress != undefined">{{ String(Math.floor(ctx.progress.value / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i> / {{ String(Math.floor(ctx.progress.max / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i></span> @@ -155,7 +155,7 @@ export default Vue.extend({ text-overflow ellipsis overflow hidden - > [data-fa] + > [data-icon] margin-right 4px > .status diff --git a/src/client/app/common/views/components/url.vue b/src/client/app/common/views/components/url.vue index 04a1f30135..8698cb4a06 100644 --- a/src/client/app/common/views/components/url.vue +++ b/src/client/app/common/views/components/url.vue @@ -6,7 +6,7 @@ <span class="pathname" v-if="pathname != ''">{{ pathname }}</span> <span class="query">{{ query }}</span> <span class="hash">{{ hash }}</span> - %fa:external-link-square-alt% + <fa icon="external-link-square-alt"/> </a> </template> @@ -40,7 +40,7 @@ export default Vue.extend({ <style lang="stylus" scoped> .mk-url word-break break-all - > [data-fa] + > [data-icon] padding-left 2px font-size .9em font-weight 400 diff --git a/src/client/app/common/views/components/visibility-chooser.vue b/src/client/app/common/views/components/visibility-chooser.vue index 02f33bfbc0..62ec9c35e8 100644 --- a/src/client/app/common/views/components/visibility-chooser.vue +++ b/src/client/app/common/views/components/visibility-chooser.vue @@ -3,34 +3,34 @@ <div class="backdrop" ref="backdrop" @click="close"></div> <div class="popover" :class="{ compact }" ref="popover"> <div @click="choose('public')" :class="{ active: v == 'public' }"> - <div>%fa:globe%</div> + <div><fa icon="globe"/></div> <div> <span>%i18n:@public%</span> </div> </div> <div @click="choose('home')" :class="{ active: v == 'home' }"> - <div>%fa:home%</div> + <div><fa icon="home"/></div> <div> <span>%i18n:@home%</span> <span>%i18n:@home-desc%</span> </div> </div> <div @click="choose('followers')" :class="{ active: v == 'followers' }"> - <div>%fa:unlock%</div> + <div><fa icon="unlock"/></div> <div> <span>%i18n:@followers%</span> <span>%i18n:@followers-desc%</span> </div> </div> <div @click="choose('specified')" :class="{ active: v == 'specified' }"> - <div>%fa:envelope%</div> + <div><fa icon="envelope"/></div> <div> <span>%i18n:@specified%</span> <span>%i18n:@specified-desc%</span> </div> </div> <div @click="choose('private')" :class="{ active: v == 'private' }"> - <div>%fa:lock%</div> + <div><fa icon="lock"/></div> <div> <span>%i18n:@private%</span> </div> diff --git a/src/client/app/common/views/pages/follow.vue b/src/client/app/common/views/pages/follow.vue index 92f24fb538..b800d65d14 100644 --- a/src/client/app/common/views/pages/follow.vue +++ b/src/client/app/common/views/pages/follow.vue @@ -19,13 +19,13 @@ @click="onClick" :disabled="followWait"> <template v-if="!followWait"> - <template v-if="user.hasPendingFollowRequestFromYou && user.isLocked">%fa:hourglass-half% %i18n:@request-pending%</template> - <template v-else-if="user.hasPendingFollowRequestFromYou && !user.isLocked">%fa:hourglass-start% %i18n:@follow-processing%</template> - <template v-else-if="user.isFollowing">%fa:minus% %i18n:@following%</template> - <template v-else-if="!user.isFollowing && user.isLocked">%fa:plus% %i18n:@follow-request%</template> - <template v-else-if="!user.isFollowing && !user.isLocked">%fa:plus% %i18n:@follow%</template> + <template v-if="user.hasPendingFollowRequestFromYou && user.isLocked"><fa icon="hourglass-half"/> %i18n:@request-pending%</template> + <template v-else-if="user.hasPendingFollowRequestFromYou && !user.isLocked"><fa icon="hourglass-start"/> %i18n:@follow-processing%</template> + <template v-else-if="user.isFollowing"><fa icon="minus"/> %i18n:@following%</template> + <template v-else-if="!user.isFollowing && user.isLocked"><fa icon="plus"/> %i18n:@follow-request%</template> + <template v-else-if="!user.isFollowing && !user.isLocked"><fa icon="plus"/> %i18n:@follow%</template> </template> - <template v-else>%fa:spinner .pulse .fw%</template> + <template v-else><fa icon="spinner .pulse" fixed-width/></template> </button> </div> </template> diff --git a/src/client/app/common/views/widgets/donation.vue b/src/client/app/common/views/widgets/donation.vue index b025b41e7d..4ef1557f97 100644 --- a/src/client/app/common/views/widgets/donation.vue +++ b/src/client/app/common/views/widgets/donation.vue @@ -2,7 +2,7 @@ <div> <mk-widget-container :show-header="false"> <article class="dolfvtibguprpxxhfndqaosjitixjohx"> - <h1>%fa:heart%%i18n:@title%</h1> + <h1><fa icon="heart"/>%i18n:@title%</h1> <p v-if="meta"> {{ '%i18n:@text%'.substr(0, '%i18n:@text%'.indexOf('{')) }} <a :href="meta.maintainer.url">{{ meta.maintainer.name }}</a> @@ -41,7 +41,7 @@ export default define({ margin 0 0 5px 0 font-size 1em - > [data-fa] + > [data-icon] margin-right 0.25em > p diff --git a/src/client/app/common/views/widgets/hashtags.vue b/src/client/app/common/views/widgets/hashtags.vue index 0cb6b2df10..656c683171 100644 --- a/src/client/app/common/views/widgets/hashtags.vue +++ b/src/client/app/common/views/widgets/hashtags.vue @@ -1,7 +1,7 @@ <template> <div class="mkw-hashtags"> <mk-widget-container :show-header="!props.compact"> - <template slot="header">%fa:hashtag%%i18n:@title%</template> + <template slot="header"><fa icon="hashtag"/>%i18n:@title%</template> <div class="mkw-hashtags--body" :data-mobile="platform == 'mobile'"> <mk-trends/> diff --git a/src/client/app/common/views/widgets/memo.vue b/src/client/app/common/views/widgets/memo.vue index be8b18a4e9..07d0c58345 100644 --- a/src/client/app/common/views/widgets/memo.vue +++ b/src/client/app/common/views/widgets/memo.vue @@ -1,7 +1,7 @@ <template> <div class="mkw-memo"> <mk-widget-container :show-header="!props.compact"> - <template slot="header">%fa:R sticky-note%%i18n:@title%</template> + <template slot="header"><fa :icon="['far', 'sticky-note']"/>%i18n:@title%</template> <div class="mkw-memo--body"> <textarea v-model="text" placeholder="%i18n:@memo%" @input="onChange"></textarea> diff --git a/src/client/app/common/views/widgets/photo-stream.vue b/src/client/app/common/views/widgets/photo-stream.vue index fd711b2761..9c6ce129b7 100644 --- a/src/client/app/common/views/widgets/photo-stream.vue +++ b/src/client/app/common/views/widgets/photo-stream.vue @@ -1,9 +1,9 @@ <template> <div class="mkw-photo-stream" :class="$style.root" :data-melt="props.design == 2"> <mk-widget-container :show-header="props.design == 0" :naked="props.design == 2"> - <template slot="header">%fa:camera%%i18n:@title%</template> + <template slot="header"><fa icon="camera"/>%i18n:@title%</template> - <p :class="$style.fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> + <p :class="$style.fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:common.loading%<mk-ellipsis/></p> <div :class="$style.stream" v-if="!fetching && images.length > 0"> <div v-for="image in images" :class="$style.img" :style="`background-image: url(${image.thumbnailUrl || image.url})`"></div> </div> @@ -94,7 +94,7 @@ export default define({ text-align center color #aaa - > [data-fa] + > [data-icon] margin-right 4px </style> diff --git a/src/client/app/common/views/widgets/posts-monitor.vue b/src/client/app/common/views/widgets/posts-monitor.vue index c62533d1ee..4527489f52 100644 --- a/src/client/app/common/views/widgets/posts-monitor.vue +++ b/src/client/app/common/views/widgets/posts-monitor.vue @@ -1,8 +1,8 @@ <template> <div class="mkw-posts-monitor"> <mk-widget-container :show-header="props.design == 0" :naked="props.design == 2"> - <template slot="header">%fa:chart-line%%i18n:@title%</template> - <button slot="func" @click="toggle" title="%i18n:@toggle%">%fa:sort%</button> + <template slot="header"><fa icon="chart-line"/>%i18n:@title%</template> + <button slot="func" @click="toggle" title="%i18n:@toggle%"><fa icon="sort"/></button> <div class="qpdmibaztplkylerhdbllwcokyrfxeyj" :class="{ dual: props.view == 0 }"> <svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`" v-show="props.view != 2"> diff --git a/src/client/app/common/views/widgets/rss.vue b/src/client/app/common/views/widgets/rss.vue index 68ab8e3a57..2fc97c8043 100644 --- a/src/client/app/common/views/widgets/rss.vue +++ b/src/client/app/common/views/widgets/rss.vue @@ -1,11 +1,11 @@ <template> <div class="mkw-rss"> <mk-widget-container :show-header="!props.compact"> - <template slot="header">%fa:rss-square%RSS</template> - <button slot="func" title="設定" @click="setting">%fa:cog%</button> + <template slot="header"><fa icon="rss-square"/>RSS</template> + <button slot="func" title="設定" @click="setting"><fa icon="cog"/></button> <div class="mkw-rss--body" :data-mobile="platform == 'mobile'"> - <p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> + <p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:common.loading%<mk-ellipsis/></p> <div class="feed" v-else> <a v-for="item in items" :href="item.link" target="_blank">{{ item.title }}</a> </div> @@ -85,7 +85,7 @@ export default define({ text-align center color #aaa - > [data-fa] + > [data-icon] margin-right 4px &[data-mobile] diff --git a/src/client/app/common/views/widgets/server.cpu.vue b/src/client/app/common/views/widgets/server.cpu.vue index 2034aee0eb..986577c51f 100644 --- a/src/client/app/common/views/widgets/server.cpu.vue +++ b/src/client/app/common/views/widgets/server.cpu.vue @@ -2,7 +2,7 @@ <div class="cpu"> <x-pie class="pie" :value="usage"/> <div> - <p>%fa:microchip%CPU</p> + <p><fa icon="microchip"/>CPU</p> <p>{{ meta.cpu.cores }} Cores</p> <p>{{ meta.cpu.model }}</p> </div> @@ -57,7 +57,7 @@ export default Vue.extend({ &:first-child font-weight bold - > [data-fa] + > [data-icon] margin-right 4px &:after diff --git a/src/client/app/common/views/widgets/server.disk.vue b/src/client/app/common/views/widgets/server.disk.vue index 667576ab76..039c4f5c29 100644 --- a/src/client/app/common/views/widgets/server.disk.vue +++ b/src/client/app/common/views/widgets/server.disk.vue @@ -2,7 +2,7 @@ <div class="disk"> <x-pie class="pie" :value="usage"/> <div> - <p>%fa:R hdd%Storage</p> + <p><fa :icon="['far', 'hdd']"/>Storage</p> <p>Total: {{ total | bytes(1) }}</p> <p>Free: {{ available | bytes(1) }}</p> <p>Used: {{ used | bytes(1) }}</p> @@ -65,7 +65,7 @@ export default Vue.extend({ &:first-child font-weight bold - > [data-fa] + > [data-icon] margin-right 4px &:after diff --git a/src/client/app/common/views/widgets/server.memory.vue b/src/client/app/common/views/widgets/server.memory.vue index 9e12884cf9..d7ad04b08f 100644 --- a/src/client/app/common/views/widgets/server.memory.vue +++ b/src/client/app/common/views/widgets/server.memory.vue @@ -2,7 +2,7 @@ <div class="memory"> <x-pie class="pie" :value="usage"/> <div> - <p>%fa:flask%Memory</p> + <p><fa icon="flask"/>Memory</p> <p>Total: {{ total | bytes(1) }}</p> <p>Used: {{ used | bytes(1) }}</p> <p>Free: {{ free | bytes(1) }}</p> @@ -65,7 +65,7 @@ export default Vue.extend({ &:first-child font-weight bold - > [data-fa] + > [data-icon] margin-right 4px &:after diff --git a/src/client/app/common/views/widgets/server.vue b/src/client/app/common/views/widgets/server.vue index 62d75e2bf6..18c2af1e4b 100644 --- a/src/client/app/common/views/widgets/server.vue +++ b/src/client/app/common/views/widgets/server.vue @@ -1,10 +1,10 @@ <template> <div class="mkw-server"> <mk-widget-container :show-header="props.design == 0" :naked="props.design == 2"> - <template slot="header">%fa:server%%i18n:@title%</template> - <button slot="func" @click="toggle" title="%i18n:@toggle%">%fa:sort%</button> + <template slot="header"><fa icon="server"/>%i18n:@title%</template> + <button slot="func" @click="toggle" title="%i18n:@toggle%"><fa icon="sort"/></button> - <p :class="$style.fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> + <p :class="$style.fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:common.loading%<mk-ellipsis/></p> <template v-if="!fetching"> <x-cpu-memory v-show="props.view == 0" :connection="connection"/> <x-cpu v-show="props.view == 1" :connection="connection" :meta="meta"/> @@ -87,7 +87,7 @@ export default define({ text-align center color #aaa - > [data-fa] + > [data-icon] margin-right 4px </style> diff --git a/src/client/app/common/views/widgets/tips.vue b/src/client/app/common/views/widgets/tips.vue index 7bb11d4656..3ed6548801 100644 --- a/src/client/app/common/views/widgets/tips.vue +++ b/src/client/app/common/views/widgets/tips.vue @@ -1,6 +1,6 @@ <template> <div class="mkw-tips"> - <p ref="tip">%fa:R lightbulb%<span v-html="tip"></span></p> + <p ref="tip"><fa :icon="['far', 'lightbulb']"/><span v-html="tip"></span></p> </div> </template> @@ -88,7 +88,7 @@ export default define({ font-size 0.7em color #999 - > [data-fa] + > [data-icon] margin-right 4px kbd |