This commit is contained in:
syuilo 2017-12-08 02:44:50 +09:00
parent 822ba594ec
commit a7aa24e7a3
115 changed files with 559 additions and 456 deletions

View file

@ -20,6 +20,12 @@ import * as mocha from 'gulp-mocha';
import * as replace from 'gulp-replace';
import * as htmlmin from 'gulp-htmlmin';
const uglifyes = require('uglify-es');
const fontawesome = require('@fortawesome/fontawesome');
const solid = require('@fortawesome/fontawesome-free-solid');
// Adds all the icons from the Solid style into our library for easy lookup
fontawesome.library.add(solid);
import version from './src/version';
const uglify = uglifyComposer(uglifyes, console);
@ -169,7 +175,8 @@ gulp.task('build:client:pug', [
gulp.src('./src/web/app/base.pug')
.pipe(pug({
locals: {
themeColor: constants.themeColor
themeColor: constants.themeColor,
facss: fontawesome.dom.css()
}
}))
.pipe(htmlmin({

View file

@ -22,6 +22,8 @@
"format": "gulp format"
},
"dependencies": {
"@fortawesome/fontawesome": "^1.0.0",
"@fortawesome/fontawesome-free-solid": "^5.0.0",
"@prezzemolo/rap": "0.1.2",
"@prezzemolo/zip": "0.0.3",
"@types/bcryptjs": "2.4.1",

View file

@ -21,7 +21,8 @@ html
script
include ./../../../built/web/assets/safe.js
script(src='https://use.fontawesome.com/db921426cb.js' async)
// FontAwesome style
style #{facss}
body
noscript: p

View file

@ -244,10 +244,10 @@
<p if={ reply }><b>&gt;&gt;{ reply.index }</b> ({ reply.user.name }): <a onclick={ clearReply }>[x]</a></p>
<textarea ref="text" disabled={ wait } oninput={ update } onkeydown={ onkeydown } onpaste={ onpaste } placeholder="%i18n:ch.tags.mk-channel-form.textarea%"></textarea>
<div class="actions">
<button onclick={ selectFile }><i class="fa fa-upload"></i>%i18n:ch.tags.mk-channel-form.upload%</button>
<button onclick={ drive }><i class="fa fa-cloud"></i>%i18n:ch.tags.mk-channel-form.drive%</button>
<button onclick={ selectFile }>%fa:upload%%i18n:ch.tags.mk-channel-form.upload%</button>
<button onclick={ drive }>%fa:cloud%%i18n:ch.tags.mk-channel-form.drive%</button>
<button class={ wait: wait } ref="submit" disabled={ wait || (refs.text.value.length == 0) } onclick={ post }>
<i class="fa fa-paper-plane" if={ !wait }></i>{ wait ? '%i18n:ch.tags.mk-channel-form.posting%' : '%i18n:ch.tags.mk-channel-form.post%' }<mk-ellipsis if={ wait }/>
<virtual if={ !wait }>%fa:paper-plane%</virtual>{ wait ? '%i18n:ch.tags.mk-channel-form.posting%' : '%i18n:ch.tags.mk-channel-form.post%' }<mk-ellipsis if={ wait }/>
</button>
</div>
<mk-uploader ref="uploader"/>
@ -269,7 +269,7 @@
display flex
> button
> i
> [data-fa]
margin-right 0.25em
&:last-child

View file

@ -96,17 +96,17 @@
</mk-error>
<mk-troubleshooter>
<h1><i class="fa fa-wrench"></i>%i18n:common.tags.mk-error.troubleshooter.title%</h1>
<h1>%fa:wrench%%i18n:common.tags.mk-error.troubleshooter.title%</h1>
<div>
<p data-wip={ network == null }><i if={ network != null } class="fa fa-{ network ? 'check' : 'times' }"></i>{ network == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-network%' : '%i18n:common.tags.mk-error.troubleshooter.network%' }<mk-ellipsis if={ network == null }/></p>
<p if={ network == true } data-wip={ internet == null }><i if={ internet != null } class="fa fa-{ internet ? 'check' : 'times' }"></i>{ internet == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-internet%' : '%i18n:common.tags.mk-error.troubleshooter.internet%' }<mk-ellipsis if={ internet == null }/></p>
<p if={ internet == true } data-wip={ server == null }><i if={ server != null } class="fa fa-{ server ? 'check' : 'times' }"></i>{ server == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-server%' : '%i18n:common.tags.mk-error.troubleshooter.server%' }<mk-ellipsis if={ server == null }/></p>
<p data-wip={ network == null }><virtual if={ network != null }><virtual if={ network }>%fa:check%</virtual><virtual if={ !network }>%fa:times%</virtual></virtual>{ network == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-network%' : '%i18n:common.tags.mk-error.troubleshooter.network%' }<mk-ellipsis if={ network == null }/></p>
<p if={ network == true } data-wip={ internet == null }><virtual if={ internet != null }><virtual if={ internet }>%fa:check%</virtual><virtual if={ !internet }>%fa:times%</virtual></virtual>{ internet == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-internet%' : '%i18n:common.tags.mk-error.troubleshooter.internet%' }<mk-ellipsis if={ internet == null }/></p>
<p if={ internet == true } data-wip={ server == null }><virtual if={ server != null }><virtual if={ server }>%fa:check%</virtual><virtual if={ !server }>%fa:times%</virtual></virtual>{ server == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-server%' : '%i18n:common.tags.mk-error.troubleshooter.server%' }<mk-ellipsis if={ server == null }/></p>
</div>
<p if={ !end }>%i18n:common.tags.mk-error.troubleshooter.finding%<mk-ellipsis/></p>
<p if={ network === false }><b><i class="fa fa-exclamation-triangle"></i>%i18n:common.tags.mk-error.troubleshooter.no-network%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-network-desc%</p>
<p if={ internet === false }><b><i class="fa fa-exclamation-triangle"></i>%i18n:common.tags.mk-error.troubleshooter.no-internet%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-internet-desc%</p>
<p if={ server === false }><b><i class="fa fa-exclamation-triangle"></i>%i18n:common.tags.mk-error.troubleshooter.no-server%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-server-desc%</p>
<p if={ server === true } class="success"><b><i class="fa fa-info-circle"></i>%i18n:common.tags.mk-error.troubleshooter.success%</b><br>%i18n:common.tags.mk-error.troubleshooter.success-desc%</p>
<p if={ network === false }><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-network%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-network-desc%</p>
<p if={ internet === false }><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-internet%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-internet-desc%</p>
<p if={ server === false }><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-server%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-server-desc%</p>
<p if={ server === true } class="success"><b>%fa:info-circle%%i18n:common.tags.mk-error.troubleshooter.success%</b><br>%i18n:common.tags.mk-error.troubleshooter.success-desc%</p>
<style>
:scope
@ -125,7 +125,7 @@
color #444
border-bottom solid 1px #eee
> i
> [data-fa]
margin-right 0.25em
> div
@ -140,13 +140,13 @@
&[data-wip]
color #888
> i
> [data-fa]
margin-right 0.25em
&.fa-times
&.times
color #e03524
&.fa-check
&.check
color #84c32f
> p
@ -157,7 +157,7 @@
border-top solid 1px #eee
> b
> i
> [data-fa]
margin-right 0.25em
&.success

View file

@ -1,5 +1,5 @@
<mk-file-type-icon>
<i class="fa fa-file-image-o" if={ kind == 'image' }></i>
<virtual if={ kind == 'image' }>%fa:file-image%</virtual>
<style>
:scope
display inline

View file

@ -3,13 +3,13 @@
<div class="files"></div>
<mk-uploader ref="uploader"/>
<button class="send" onclick={ send } disabled={ sending } title="%i18n:common.send%">
<i class="fa fa-paper-plane" if={ !sending }></i><i class="fa fa-spinner fa-spin" if={ sending }></i>
<virtual if={ !sending }>%fa:paper-plane%</virtual><virtual if={ sending }>%fa:spinner .spin%</virtual>
</button>
<button class="attach-from-local" type="button" title="%i18n:common.tags.mk-messaging-form.attach-from-local%">
<i class="fa fa-upload"></i>
%fa:upload%
</button>
<button class="attach-from-drive" type="button" title="%i18n:common.tags.mk-messaging-form.attach-from-drive%">
<i class="fa fa-folder-open"></i>
%fa:folder-open%
</button>
<input name="file" type="file" accept="image/*"/>
<style>

View file

@ -1,7 +1,7 @@
<mk-messaging data-compact={ opts.compact }>
<div class="search" if={ !opts.compact }>
<div class="form">
<label for="search-input"><i class="fa fa-search"></i></label>
<label for="search-input">%fa:search%</label>
<input ref="search" type="search" oninput={ search } onkeydown={ onSearchKeydown } placeholder="%i18n:common.tags.mk-messaging.search-user%"/>
</div>
<div class="result">
@ -32,7 +32,7 @@
</virtual>
</div>
<p class="no-history" if={ !fetching && history.length == 0 }>%i18n:common.tags.mk-messaging.no-history%</p>
<p class="fetching" if={ fetching }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="fetching" if={ fetching }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style>
:scope
display block
@ -87,7 +87,7 @@
width 38px
pointer-events none
> i
> [data-fa]
display block
position absolute
top 0
@ -189,7 +189,6 @@
font-weight normal
color rgba(0, 0, 0, 0.3)
> .history
> a
@ -304,7 +303,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
// TODO: element base media query

View file

@ -15,7 +15,7 @@
</div>
</div>
<footer>
<mk-time time={ message.created_at }/><i class="fa fa-pencil is-edited" if={ message.is_edited }></i>
<mk-time time={ message.created_at }/><virtual if={ message.is_edited }>%fa:pencil-alt%</virtual>
</footer>
</div>
<style>
@ -147,7 +147,7 @@
font-size 10px
color rgba(0, 0, 0, 0.4)
> .is-edited
> [data-fa]
margin-left 4px
&:not([data-is-me='true'])

View file

@ -1,10 +1,10 @@
<mk-messaging-room>
<div class="stream">
<p class="init" if={ init }><i class="fa fa-spinner fa-spin"></i>%i18n:common.loading%</p>
<p class="empty" if={ !init && messages.length == 0 }><i class="fa fa-info-circle"></i>%i18n:common.tags.mk-messaging-room.empty%</p>
<p class="no-history" if={ !init && messages.length > 0 && !moreMessagesIsInStock }><i class="fa fa-flag"></i>%i18n:common.tags.mk-messaging-room.no-history%</p>
<p class="init" if={ init }>%fa:spinner .spin%%i18n:common.loading%</p>
<p class="empty" if={ !init && messages.length == 0 }>%fa:info-circle%%i18n:common.tags.mk-messaging-room.empty%</p>
<p class="no-history" if={ !init && messages.length > 0 && !moreMessagesIsInStock }>%fa:flag%%i18n:common.tags.mk-messaging-room.no-history%</p>
<button class="more { fetching: fetchingMoreMessages }" if={ moreMessagesIsInStock } onclick={ fetchMoreMessages } disabled={ fetchingMoreMessages }>
<i class="fa fa-spinner fa-pulse fa-fw" if={ fetchingMoreMessages }></i>{ fetchingMoreMessages ? '%i18n:common.loading%' : '%i18n:common.tags.mk-messaging-room.more%' }
<virtual if={ fetchingMoreMessages }>%fa:spinner .pluse .fw%</virtual>{ fetchingMoreMessages ? '%i18n:common.loading%' : '%i18n:common.tags.mk-messaging-room.more%' }
</button>
<virtual each={ message, i in messages }>
<mk-messaging-message message={ message }/>
@ -32,7 +32,7 @@
font-size 0.8em
color rgba(0, 0, 0, 0.4)
i
[data-fa]
margin-right 4px
> .empty
@ -43,7 +43,7 @@
font-size 0.8em
color rgba(0, 0, 0, 0.4)
i
[data-fa]
margin-right 4px
> .no-history
@ -54,7 +54,7 @@
font-size 0.8em
color rgba(0, 0, 0, 0.4)
i
[data-fa]
margin-right 4px
> .more
@ -75,7 +75,7 @@
&.fetching
cursor wait
> i
> [data-fa]
margin-right 4px
> .message
@ -141,7 +141,7 @@
border-radius 16px
transition opacity 1s ease
> i
> [data-fa]
position absolute
top 0
left 10px
@ -291,7 +291,7 @@
this.notify = message => {
const n = document.createElement('p');
n.innerHTML = '<i class="fa fa-arrow-circle-down"></i>' + message;
n.innerHTML = '%fa:arrow-circle-down%' + message;
n.onclick = () => {
this.scrollToBottom();
n.parentNode.removeChild(n);

View file

@ -1,5 +1,5 @@
<mk-nav-links>
<a href={ _ABOUT_URL_ }>%i18n:common.tags.mk-nav-links.about%</a><i></i><a href={ _STATS_URL_ }>%i18n:common.tags.mk-nav-links.stats%</a><i></i><a href={ _STATUS_URL_ }>%i18n:common.tags.mk-nav-links.status%</a><i></i><a href="http://zawazawa.jp/misskey/">%i18n:common.tags.mk-nav-links.wiki%</a><i></i><a href="https://github.com/syuilo/misskey/blob/master/DONORS.md">%i18n:common.tags.mk-nav-links.donors%</a><i></i><a href="https://github.com/syuilo/misskey">%i18n:common.tags.mk-nav-links.repository%</a><i></i><a href={ _DEV_URL_ }>%i18n:common.tags.mk-nav-links.develop%</a><i></i><a href="https://twitter.com/misskey_xyz" target="_blank">Follow us on <i class="fa fa-twitter"></i></a>
<a href={ _ABOUT_URL_ }>%i18n:common.tags.mk-nav-links.about%</a><i></i><a href={ _STATS_URL_ }>%i18n:common.tags.mk-nav-links.stats%</a><i></i><a href={ _STATUS_URL_ }>%i18n:common.tags.mk-nav-links.status%</a><i></i><a href="http://zawazawa.jp/misskey/">%i18n:common.tags.mk-nav-links.wiki%</a><i></i><a href="https://github.com/syuilo/misskey/blob/master/DONORS.md">%i18n:common.tags.mk-nav-links.donors%</a><i></i><a href="https://github.com/syuilo/misskey">%i18n:common.tags.mk-nav-links.repository%</a><i></i><a href={ _DEV_URL_ }>%i18n:common.tags.mk-nav-links.develop%</a><i></i><a href="https://twitter.com/misskey_xyz" target="_blank">Follow us on %fa:twitter%</a>
<style>
:scope
display inline

View file

@ -1,18 +1,18 @@
<mk-poll-editor>
<p class="caution" if={ choices.length < 2 }>
<i class="fa fa-exclamation-triangle"></i>%i18n:common.tags.mk-poll-editor.no-only-one-choice%
%fa:exclamation-triangle%%i18n:common.tags.mk-poll-editor.no-only-one-choice%
</p>
<ul ref="choices">
<li each={ choice, i in choices }>
<input value={ choice } oninput={ oninput.bind(null, i) } placeholder={ '%i18n:common.tags.mk-poll-editor.choice-n%'.replace('{}', i + 1) }>
<button onclick={ remove.bind(null, i) } title="%i18n:common.tags.mk-poll-editor.remove%">
<i class="fa fa-times"></i>
%fa:times%
</button>
</li>
</ul>
<button class="add" if={ choices.length < 10 } onclick={ add }>%i18n:common.tags.mk-poll-editor.add%</button>
<button class="destroy" onclick={ destroy } title="%i18n:common.tags.mk-poll-editor.destroy%">
<i class="fa fa-times"></i>
%fa:times%
</button>
<style>
:scope
@ -24,7 +24,7 @@
font-size 0.8em
color #f00
> i
> [data-fa]
margin-right 4px
> ul

View file

@ -3,7 +3,7 @@
<li each={ poll.choices } onclick={ vote.bind(null, id) } class={ voted: voted } title={ !parent.isVoted ? '%i18n:common.tags.mk-poll.vote-to%'.replace('{}', text) : '' }>
<div class="backdrop" style={ 'width:' + (parent.result ? (votes / parent.total * 100) : 0) + '%' }></div>
<span>
<i class="fa fa-check" if={ is_voted }></i>
<virtual if={ is_voted }>%fa:check%</virtual>
{ text }
<span class="votes" if={ parent.result }>({ '%i18n:common.tags.mk-poll.vote-count%'.replace('{}', votes) })</span>
</span>

View file

@ -2,7 +2,11 @@
<div class="records" if={ history.length != 0 }>
<div each={ history }>
<mk-time time={ created_at }/>
<header><i class="fa fa-check" if={ success }></i><i class="fa fa-times" if={ !success }></i><span class="ip">{ ip }</span></header>
<header>
<virtual if={ success }>%fa:check%</virtual>
<virtual if={ !success }>%fa:times%</virtual>
<span class="ip">{ ip }</span>
</header>
<pre><code>{ JSON.stringify(headers, null, ' ') }</code></pre>
</div>
</div>
@ -17,13 +21,13 @@
> header
> i
> [data-fa]
margin-right 8px
&.fa-check
&.check
color #0fda82
&.fa-times
&.times
color #ff3100
> .ip

View file

@ -1,10 +1,10 @@
<mk-signin>
<form class={ signing: signing } onsubmit={ onsubmit }>
<label class="user-name">
<input ref="username" type="text" pattern="^[a-zA-Z0-9-]+$" placeholder="%i18n:common.tags.mk-signin.username%" autofocus="autofocus" required="required" oninput={ oninput }/><i class="fa fa-at"></i>
<input ref="username" type="text" pattern="^[a-zA-Z0-9-]+$" placeholder="%i18n:common.tags.mk-signin.username%" autofocus="autofocus" required="required" oninput={ oninput }/>%fa:at%
</label>
<label class="password">
<input ref="password" type="password" placeholder="%i18n:common.tags.mk-signin.password%" required="required"/><i class="fa fa-lock"></i>
<input ref="password" type="password" placeholder="%i18n:common.tags.mk-signin.password%" required="required"/>%fa:lock%
</label>
<button type="submit" disabled={ signing }>{ signing ? '%i18n:common.tags.mk-signin.signing-in%' : '%i18n:common.tags.mk-signin.signin%' }</button>
</form>

View file

@ -1,35 +1,35 @@
<mk-signup>
<form onsubmit={ onsubmit } autocomplete="off">
<label class="username">
<p class="caption"><i class="fa fa-at"></i>%i18n:common.tags.mk-signup.username%</p>
<p class="caption">%fa:at%%i18n:common.tags.mk-signup.username%</p>
<input ref="username" type="text" pattern="^[a-zA-Z0-9-]{3,20}$" placeholder="a~z、A~Z、0~9、-" autocomplete="off" required="required" onkeyup={ onChangeUsername }/>
<p class="profile-page-url-preview" if={ refs.username.value != '' && username-state != 'invalidFormat' && username-state != 'minRange' && username-state != 'maxRange' }>{ _URL_ + '/' + refs.username.value }</p>
<p class="info" if={ usernameState == 'wait' } style="color:#999"><i class="fa fa-fw fa-spinner fa-pulse"></i>%i18n:common.tags.mk-signup.checking%</p>
<p class="info" if={ usernameState == 'ok' } style="color:#3CB7B5"><i class="fa fa-fw fa-check"></i>%i18n:common.tags.mk-signup.available%</p>
<p class="info" if={ usernameState == 'unavailable' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>%i18n:common.tags.mk-signup.unavailable%</p>
<p class="info" if={ usernameState == 'error' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>%i18n:common.tags.mk-signup.error%</p>
<p class="info" if={ usernameState == 'invalid-format' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>%i18n:common.tags.mk-signup.invalid-format%</p>
<p class="info" if={ usernameState == 'min-range' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>%i18n:common.tags.mk-signup.too-short%</p>
<p class="info" if={ usernameState == 'max-range' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>%i18n:common.tags.mk-signup.too-long%</p>
<p class="info" if={ usernameState == 'wait' } style="color:#999">%fa:spinner .pluse .fw%%i18n:common.tags.mk-signup.checking%</p>
<p class="info" if={ usernameState == 'ok' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.available%</p>
<p class="info" if={ usernameState == 'unavailable' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.unavailable%</p>
<p class="info" if={ usernameState == 'error' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.error%</p>
<p class="info" if={ usernameState == 'invalid-format' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.invalid-format%</p>
<p class="info" if={ usernameState == 'min-range' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.too-short%</p>
<p class="info" if={ usernameState == 'max-range' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.too-long%</p>
</label>
<label class="password">
<p class="caption"><i class="fa fa-lock"></i>%i18n:common.tags.mk-signup.password%</p>
<p class="caption">%fa:lock%%i18n:common.tags.mk-signup.password%</p>
<input ref="password" type="password" placeholder="%i18n:common.tags.mk-signup.password-placeholder%" autocomplete="off" required="required" onkeyup={ onChangePassword }/>
<div class="meter" if={ passwordStrength != '' } data-strength={ passwordStrength }>
<div class="value" ref="passwordMetar"></div>
</div>
<p class="info" if={ passwordStrength == 'low' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>%i18n:common.tags.mk-signup.weak-password%</p>
<p class="info" if={ passwordStrength == 'medium' } style="color:#3CB7B5"><i class="fa fa-fw fa-check"></i>%i18n:common.tags.mk-signup.normal-password%</p>
<p class="info" if={ passwordStrength == 'high' } style="color:#3CB7B5"><i class="fa fa-fw fa-check"></i>%i18n:common.tags.mk-signup.strong-password%</p>
<p class="info" if={ passwordStrength == 'low' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.weak-password%</p>
<p class="info" if={ passwordStrength == 'medium' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.normal-password%</p>
<p class="info" if={ passwordStrength == 'high' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.strong-password%</p>
</label>
<label class="retype-password">
<p class="caption"><i class="fa fa-lock"></i>%i18n:common.tags.mk-signup.password%(%i18n:common.tags.mk-signup.retype%)</p>
<p class="caption">%fa:lock%%i18n:common.tags.mk-signup.password%(%i18n:common.tags.mk-signup.retype%)</p>
<input ref="passwordRetype" type="password" placeholder="%i18n:common.tags.mk-signup.retype-placeholder%" autocomplete="off" required="required" onkeyup={ onChangePasswordRetype }/>
<p class="info" if={ passwordRetypeState == 'match' } style="color:#3CB7B5"><i class="fa fa-fw fa-check"></i>%i18n:common.tags.mk-signup.password-matched%</p>
<p class="info" if={ passwordRetypeState == 'not-match' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>%i18n:common.tags.mk-signup.password-not-matched%</p>
<p class="info" if={ passwordRetypeState == 'match' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.password-matched%</p>
<p class="info" if={ passwordRetypeState == 'not-match' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.password-not-matched%</p>
</label>
<label class="recaptcha">
<p class="caption"><i class="fa fa-toggle-on" if={ recaptchaed }></i><i class="fa fa-toggle-off" if={ !recaptchaed }></i>%i18n:common.tags.mk-signup.recaptcha%</p>
<p class="caption"><virtual if={ recaptchaed }>%fa:toggle-on%</virtual><virtual if={ !recaptchaed }>%fa:toggle-off%</virtual>%i18n:common.tags.mk-signup.recaptcha%</p>
<div if={ recaptcha } class="g-recaptcha" data-callback="onRecaptchaed" data-expired-callback="onRecaptchaExpired" data-sitekey={ recaptcha.site_key }></div>
</label>
<label class="agree-tou">
@ -55,7 +55,7 @@
color #828888
font-size 0.95em
> i
> [data-fa]
margin-right 0.25em
color #96adac
@ -64,7 +64,7 @@
margin 4px 0
font-size 0.8em
> i
> [data-fa]
margin-right 0.3em
&.username

View file

@ -1,14 +1,14 @@
<mk-stream-indicator>
<p if={ connection.state == 'initializing' }>
<i class="fa fa-spinner fa-spin"></i>
%fa:spinner .spin%
<span>%i18n:common.tags.mk-stream-indicator.connecting%<mk-ellipsis/></span>
</p>
<p if={ connection.state == 'reconnecting' }>
<i class="fa fa-spinner fa-spin"></i>
%fa:spinner .spin%
<span>%i18n:common.tags.mk-stream-indicator.reconnecting%<mk-ellipsis/></span>
</p>
<p if={ connection.state == 'connected' }>
<i class="fa fa-check"></i>
%fa:check%
<span>%i18n:common.tags.mk-stream-indicator.connected%</span>
</p>
<style>
@ -30,7 +30,7 @@
display block
margin 0
> i
> [data-fa]
margin-right 0.25em
</style>

View file

@ -2,7 +2,7 @@
<ol if={ uploads.length > 0 }>
<li each={ uploads }>
<div class="img" style="background-image: url({ img })"></div>
<p class="name"><i class="fa fa-spinner fa-pulse"></i>{ name }</p>
<p class="name">%fa:spinner .pluse%{ name }</p>
<p class="status"><span class="initing" if={ progress == undefined }>%i18n:common.tags.mk-uploader.waiting%<mk-ellipsis/></span><span class="kb" if={ progress != undefined }>{ String(Math.floor(progress.value / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }<i>KB</i> / { String(Math.floor(progress.max / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }<i>KB</i></span><span class="percentage" if={ progress != undefined }>{ Math.floor((progress.value / progress.max) * 100) }</span></p>
<progress if={ progress != undefined && progress.value != progress.max } value={ progress.value } max={ progress.max }></progress>
<div class="progress initing" if={ progress == undefined }></div>
@ -60,7 +60,7 @@
text-overflow ellipsis
overflow hidden
> i
> [data-fa]
margin-right 4px
> .status

View file

@ -12,7 +12,7 @@ export default () => {
};
function adBlockDetected() {
dialog('<i class="fa fa-exclamation-triangle"></i>広告ブロッカーを無効にしてください',
dialog('%fa:exclamation-triangle%広告ブロッカーを無効にしてください',
'<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。',
[{
text: 'OK'

View file

@ -1,7 +1,7 @@
import dialog from './dialog';
export default () => {
dialog('<i class="fa fa-exclamation-triangle"></i>Not implemented yet',
dialog('%fa:exclamation-triangle%Not implemented yet',
'要求された操作は実装されていません。<br>→<a href="https://github.com/syuilo/misskey" target="_blank">Misskeyの開発に参加する</a>', [{
text: 'OK'
}]);

View file

@ -63,7 +63,7 @@ export default (I, cb, file = null) => {
api(I, 'i/update', {
avatar_id: file.id
}).then(i => {
dialog('<i class="fa fa-info-circle"></i>アバターを更新しました',
dialog('%fa:info-circle%アバターを更新しました',
'新しいアバターが反映されるまで時間がかかる場合があります。',
[{
text: 'わかった'
@ -78,7 +78,7 @@ export default (I, cb, file = null) => {
} else {
const browser = (riot as any).mount(document.body.appendChild(document.createElement('mk-select-file-from-drive-window')), {
multiple: false,
title: '<i class="fa fa-picture-o"></i>アバターにする画像を選択'
title: '%fa:image%アバターにする画像を選択'
})[0];
browser.one('selected', file => {

View file

@ -63,7 +63,7 @@ export default (I, cb, file = null) => {
api(I, 'i/update', {
banner_id: file.id
}).then(i => {
dialog('<i class="fa fa-info-circle"></i>バナーを更新しました',
dialog('%fa:info-circle%バナーを更新しました',
'新しいバナーが反映されるまで時間がかかる場合があります。',
[{
text: 'わかりました。'
@ -78,7 +78,7 @@ export default (I, cb, file = null) => {
} else {
const browser = (riot as any).mount(document.body.appendChild(document.createElement('mk-select-file-from-drive-window')), {
multiple: false,
title: '<i class="fa fa-picture-o"></i>バナーにする画像を選択'
title: '%fa:image%バナーにする画像を選択'
})[0];
browser.one('selected', file => {

View file

@ -1,6 +1,10 @@
<mk-big-follow-button>
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } onclick={ onclick } disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }><span if={ !wait && user.is_following }><i class="fa fa-minus"></i>フォロー解除</span><span if={ !wait && !user.is_following }><i class="fa fa-plus"></i>フォロー</span><i class="fa fa-spinner fa-pulse fa-fw" if={ wait }></i></button>
<div class="init" if={ init }><i class="fa fa-spinner fa-pulse fa-fw"></i></div>
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } onclick={ onclick } disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }>
<span if={ !wait && user.is_following }>%fa:minus%フォロー解除</span>
<span if={ !wait && !user.is_following }>%fa:plus%フォロー</span>
<virtual if={ wait }>%fa:spinner .pluse .fw%</virtual>
</button>
<div class="init" if={ init }>%fa:spinner .pluse .fw%</div>
<style>
:scope
display block

View file

@ -36,7 +36,7 @@
> p
cursor default
> i:last-child
> [data-fa]:last-child
position absolute
top 0
right 8px

View file

@ -1,12 +1,14 @@
<mk-crop-window>
<mk-window ref="window" is-modal={ true } width={ '800px' }><yield to="header"><i class="fa fa-crop"></i>{ parent.title }</yield>
<yield to="content">
<div class="body"><img ref="img" src={ parent.image.url + '?thumbnail&quality=80' } alt=""/></div>
<div class="action">
<button class="skip" onclick={ parent.skip }>クロップをスキップ</button>
<button class="cancel" onclick={ parent.cancel }>キャンセル</button>
<button class="ok" onclick={ parent.ok }>決定</button>
</div></yield>
<mk-window ref="window" is-modal={ true } width={ '800px' }>
<yield to="header">%fa:crop%{ parent.title }</yield>
<yield to="content">
<div class="body"><img ref="img" src={ parent.image.url + '?thumbnail&quality=80' } alt=""/></div>
<div class="action">
<button class="skip" onclick={ parent.skip }>クロップをスキップ</button>
<button class="cancel" onclick={ parent.cancel }>キャンセル</button>
<button class="ok" onclick={ parent.ok }>決定</button>
</div>
</yield>
</mk-window>
<style>
:scope
@ -14,7 +16,7 @@
> mk-window
[data-yield='header']
> i
> [data-fa]
margin-right 4px
[data-yield='content']

View file

@ -2,13 +2,13 @@
<mk-contextmenu ref="ctx">
<ul>
<li onclick={ parent.createFolder }>
<p><i class="fa fa-folder-o"></i>%i18n:desktop.tags.mk-drive-browser-base-contextmenu.create-folder%</p>
<p>%fa:folder-o%%i18n:desktop.tags.mk-drive-browser-base-contextmenu.create-folder%</p>
</li>
<li onclick={ parent.upload }>
<p><i class="fa fa-upload"></i>%i18n:desktop.tags.mk-drive-browser-base-contextmenu.upload%</p>
<p>%fa:upload%%i18n:desktop.tags.mk-drive-browser-base-contextmenu.upload%</p>
</li>
<li onclick={ parent.urlUpload }>
<p><i class="fa fa-cloud-upload"></i>%i18n:desktop.tags.mk-drive-browser-base-contextmenu.url-upload%</p>
<p>%fa:cloud-upload%%i18n:desktop.tags.mk-drive-browser-base-contextmenu.url-upload%</p>
</li>
</ul>
</mk-contextmenu>

View file

@ -2,7 +2,7 @@
<mk-window ref="window" is-modal={ false } width={ '800px' } height={ '500px' } popout={ popout }>
<yield to="header">
<p class="info" if={ parent.usage }><b>{ parent.usage.toFixed(1) }%</b> %i18n:desktop.tags.mk-drive-browser-window.used%</p>
<i class="fa fa-cloud"></i>%i18n:desktop.tags.mk-drive-browser-window.drive%
%fa:cloud%%i18n:desktop.tags.mk-drive-browser-window.drive%
</yield>
<yield to="content">
<mk-drive-browser multiple={ true } folder={ parent.folder } ref="browser"/>
@ -19,7 +19,7 @@
margin 0
font-size 80%
> i
> [data-fa]
margin-right 4px
[data-yield='content']

View file

@ -3,10 +3,10 @@
<div class="path" oncontextmenu={ pathOncontextmenu }>
<mk-drive-browser-nav-folder class={ current: folder == null } folder={ null }/>
<virtual each={ folder in hierarchyFolders }>
<span class="separator"><i class="fa fa-angle-right"></i></span>
<span class="separator">%fa:angle-right%</span>
<mk-drive-browser-nav-folder folder={ folder }/>
</virtual>
<span class="separator" if={ folder != null }><i class="fa fa-angle-right"></i></span>
<span class="separator" if={ folder != null }>%fa:angle-right%</span>
<span class="folder current" if={ folder != null }>{ folder.name }</span>
</div>
<input class="search" type="search" placeholder="&#xf002; %i18n:desktop.tags.mk-drive-browser.search%"/>
@ -100,7 +100,7 @@
opacity 0.5
cursor default
> i
> [data-fa]
margin 0
> .search
@ -450,7 +450,7 @@
}).catch(err => {
switch (err) {
case 'detected-circular-definition':
dialog('<i class="fa fa-exclamation-triangle"></i>%i18n:desktop.tags.mk-drive-browser.unable-to-process%',
dialog('%fa:exclamation-triangle%%i18n:desktop.tags.mk-drive-browser.unable-to-process%',
'%i18n:desktop.tags.mk-drive-browser.circular-reference-detected%', [{
text: '%i18n:common.ok%'
}]);
@ -492,7 +492,7 @@
folder_id: this.folder ? this.folder.id : undefined
});
dialog('<i class="fa fa-check"></i>%i18n:desktop.tags.mk-drive-browser.url-upload-requested%',
dialog('%fa:check%%i18n:desktop.tags.mk-drive-browser.url-upload-requested%',
'%i18n:desktop.tags.mk-drive-browser.may-take-time%', [{
text: '%i18n:common.ok%'
}]);

View file

@ -2,19 +2,19 @@
<mk-contextmenu ref="ctx">
<ul>
<li onclick={ parent.rename }>
<p><i class="fa fa-i-cursor"></i>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.rename%</p>
<p>%fa:i-cursor%%i18n:desktop.tags.mk-drive-browser-file-contextmenu.rename%</p>
</li>
<li onclick={ parent.copyUrl }>
<p><i class="fa fa-link"></i>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.copy-url%</p>
<p>%fa:link%%i18n:desktop.tags.mk-drive-browser-file-contextmenu.copy-url%</p>
</li>
<li><a href={ parent.file.url + '?download' } download={ parent.file.name } onclick={ parent.download }><i class="fa fa-download"></i>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.download%</a></li>
<li><a href={ parent.file.url + '?download' } download={ parent.file.name } onclick={ parent.download }>%fa:download%%i18n:desktop.tags.mk-drive-browser-file-contextmenu.download%</a></li>
<li class="separator"></li>
<li onclick={ parent.delete }>
<p><i class="fa fa-trash-o"></i>%i18n:common.delete%</p>
<p>%fa:trash-o%%i18n:common.delete%</p>
</li>
<li class="separator"></li>
<li class="has-child">
<p>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.else-files%<i class="fa fa-caret-right"></i></p>
<p>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.else-files%%fa:caret-right%</p>
<ul>
<li onclick={ parent.setAvatar }>
<p>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.set-as-avatar%</p>
@ -25,7 +25,7 @@
</ul>
</li>
<li class="has-child">
<p>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.open-in-app%...<i class="fa fa-caret-right"></i></p>
<p>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.open-in-app%...%fa:caret-right%</p>
<ul>
<li onclick={ parent.addApp }>
<p>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.add-app%...</p>
@ -72,7 +72,7 @@
this.copyUrl = () => {
copyToClipboard(this.file.url);
this.refs.ctx.close();
dialog('<i class="fa fa-check"></i>%i18n:desktop.tags.mk-drive-browser-file-contextmenu.copied%',
dialog('%fa:check%%i18n:desktop.tags.mk-drive-browser-file-contextmenu.copied%',
'%i18n:desktop.tags.mk-drive-browser-file-contextmenu.copied-url-to-clipboard%', [{
text: '%i18n:common.ok%'
}]);

View file

@ -2,18 +2,18 @@
<mk-contextmenu ref="ctx">
<ul>
<li onclick={ parent.move }>
<p><i class="fa fa-arrow-right"></i>%i18n:desktop.tags.mk-drive-browser-folder-contextmenu.move-to-this-folder%</p>
<p>%fa:arrow-right%%i18n:desktop.tags.mk-drive-browser-folder-contextmenu.move-to-this-folder%</p>
</li>
<li onclick={ parent.newWindow }>
<p><i class="fa fa-share-square-o"></i>%i18n:desktop.tags.mk-drive-browser-folder-contextmenu.show-in-new-window%</p>
<p>%fa:share-square-o%%i18n:desktop.tags.mk-drive-browser-folder-contextmenu.show-in-new-window%</p>
</li>
<li class="separator"></li>
<li onclick={ parent.rename }>
<p><i class="fa fa-i-cursor"></i>%i18n:desktop.tags.mk-drive-browser-folder-contextmenu.rename%</p>
<p>%fa:i-cursor%%i18n:desktop.tags.mk-drive-browser-folder-contextmenu.rename%</p>
</li>
<li class="separator"></li>
<li onclick={ parent.delete }>
<p><i class="fa fa-trash-o"></i>%i18n:common.delete%</p>
<p>%fa:trash-o%%i18n:common.delete%</p>
</li>
</ul>
</mk-contextmenu>

View file

@ -1,5 +1,5 @@
<mk-drive-browser-folder data-is-contextmenu-showing={ isContextmenuShowing.toString() } data-draghover={ draghover.toString() } onclick={ onclick } onmouseover={ onmouseover } onmouseout={ onmouseout } ondragover={ ondragover } ondragenter={ ondragenter } ondragleave={ ondragleave } ondrop={ ondrop } oncontextmenu={ oncontextmenu } draggable="true" ondragstart={ ondragstart } ondragend={ ondragend } title={ title }>
<p class="name"><i class="fa fa-fw { fa-folder-o: !hover, fa-folder-open-o: hover }"></i>{ folder.name }</p>
<p class="name"><virtual if={ hover }>%fa:folder-open .fw%</virtual><virtual if={ !hover }>%fa:folder .fw%</virtual>{ folder.name }</p>
<style>
:scope
display block
@ -41,7 +41,7 @@
font-size 0.9em
color darken($theme-color, 30%)
> i
> [data-fa]
margin-right 4px
margin-left 2px
text-align left
@ -143,7 +143,7 @@
}).catch(err => {
switch (err) {
case 'detected-circular-definition':
dialog('<i class="fa fa-exclamation-triangle"></i>%i18n:desktop.tags.mk-drive-browser-folder.unable-to-process%',
dialog('%fa:exclamation-triangle%%i18n:desktop.tags.mk-drive-browser-folder.unable-to-process%',
'%i18n:desktop.tags.mk-drive-browser-folder.circular-reference-detected%', [{
text: '%i18n:common.ok%'
}]);

View file

@ -1,4 +1,5 @@
<mk-drive-browser-nav-folder data-draghover={ draghover } onclick={ onclick } ondragover={ ondragover } ondragenter={ ondragenter } ondragleave={ ondragleave } ondrop={ ondrop }><i class="fa fa-cloud" if={ folder == null }></i><span>{ folder == null ? '%i18n:desktop.tags.mk-drive-browser-nav-folder.drive%' : folder.name }</span>
<mk-drive-browser-nav-folder data-draghover={ draghover } onclick={ onclick } ondragover={ ondragover } ondragenter={ ondragenter } ondragleave={ ondragleave } ondrop={ ondrop }>
<virtual if={ folder == null }>%fa:cloud%</virtual><span>{ folder == null ? '%i18n:desktop.tags.mk-drive-browser-nav-folder.drive%' : folder.name }</span>
<style>
:scope
&[data-draghover]

View file

@ -1,6 +1,10 @@
<mk-follow-button>
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } onclick={ onclick } disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }><i class="fa fa-minus" if={ !wait && user.is_following }></i><i class="fa fa-plus" if={ !wait && !user.is_following }></i><i class="fa fa-spinner fa-pulse fa-fw" if={ wait }></i></button>
<div class="init" if={ init }><i class="fa fa-spinner fa-pulse fa-fw"></i></div>
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } onclick={ onclick } disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }>
<virtual if={ !wait && user.is_following }>%fa:minus%</virtual>
<virtual if={ !wait && !user.is_following }>%fa:plus%</virtual>
<virtual if={ wait }>%fa:spinner .pluse .fw%</virtual>
</button>
<div class="init" if={ init }>%fa:spinner .pluse .fw%</div>
<style>
:scope
display block

View file

@ -9,9 +9,9 @@
</div>
</div>
<p class="empty" if={ !fetching && users.length == 0 }>おすすめのユーザーは見つかりませんでした。</p>
<p class="fetching" if={ fetching }><i class="fa fa-spinner fa-pulse fa-fw"></i>読み込んでいます<mk-ellipsis/></p>
<p class="fetching" if={ fetching }>%fa:spinner .pluse .fw%読み込んでいます<mk-ellipsis/></p>
<a class="refresh" onclick={ refresh }>もっと見る</a>
<button class="close" onclick={ close } title="閉じる"><i class="fa fa-times"></i></button>
<button class="close" onclick={ close } title="閉じる">%fa:times%</button>
<style>
:scope
display block
@ -85,7 +85,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
> .refresh
@ -116,7 +116,7 @@
&:active
color #222
> i
> [data-fa]
padding 14px
</style>

View file

@ -1,6 +1,6 @@
<mk-access-log-home-widget>
<virtual if={ data.design == 0 }>
<p class="title"><i class="fa fa-server"></i>%i18n:desktop.tags.mk-access-log-home-widget.title%</p>
<p class="title">%fa:server%%i18n:desktop.tags.mk-access-log-home-widget.title%</p>
</virtual>
<div ref="log">
<p each={ requests }>
@ -27,7 +27,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> div

View file

@ -1,9 +1,9 @@
<mk-channel-home-widget>
<virtual if={ !data.compact }>
<p class="title"><i class="fa fa-television"></i>{
<p class="title">%fa:tv%{
channel ? channel.title : '%i18n:desktop.tags.mk-channel-home-widget.title%'
}</p>
<button onclick={ settings } title="%i18n:desktop.tags.mk-channel-home-widget.settings%"><i class="fa fa-cog"></i></button>
<button onclick={ settings } title="%i18n:desktop.tags.mk-channel-home-widget.settings%">%fa:cog%</button>
</virtual>
<p class="get-started" if={ this.data.channel == null }>%i18n:desktop.tags.mk-channel-home-widget.get-started%</p>
<mk-channel ref="channel" show={ this.data.channel }/>
@ -25,7 +25,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> button

View file

@ -1,6 +1,6 @@
<mk-donation-home-widget>
<article>
<h1><i class="fa fa-heart"></i>%i18n:desktop.tags.mk-donation-home-widget.title%</h1>
<h1>%fa:heart%%i18n:desktop.tags.mk-donation-home-widget.title%</h1>
<p>{'%i18n:desktop.tags.mk-donation-home-widget.text%'.substr(0, '%i18n:desktop.tags.mk-donation-home-widget.text%'.indexOf('{'))}<a href="/syuilo" data-user-preview="@syuilo">@syuilo</a>{'%i18n:desktop.tags.mk-donation-home-widget.text%'.substr('%i18n:desktop.tags.mk-donation-home-widget.text%'.indexOf('}') + 1)}</p>
</article>
<style>
@ -18,7 +18,7 @@
font-size 1em
color #888
> i
> [data-fa]
margin-right 0.25em
> p

View file

@ -3,8 +3,13 @@
<div class="loading" if={ isLoading }>
<mk-ellipsis-icon/>
</div>
<p class="empty" if={ isEmpty }><i class="fa fa-comments-o"></i><span if={ mode == 'all' }>あなた宛ての投稿はありません。</span><span if={ mode == 'following' }>あなたがフォローしているユーザーからの言及はありません。</span></p>
<mk-timeline ref="timeline"><yield to="footer"><i class="fa fa-moon-o" if={ !parent.moreLoading }></i><i class="fa fa-spinner fa-pulse fa-fw" if={ parent.moreLoading }></i></yield/>
<p class="empty" if={ isEmpty }>%fa:R comments%<span if={ mode == 'all' }>あなた宛ての投稿はありません。</span><span if={ mode == 'following' }>あなたがフォローしているユーザーからの言及はありません。</span></p>
<mk-timeline ref="timeline">
<yield to="footer">
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual>
<virtual if={ parent.moreLoading }>%fa:spinner .pluse .fw%</virtual>
</yield/>
</mk-timeline>
<style>
:scope
display block
@ -40,7 +45,7 @@
text-align center
color #999
> i
> [data-fa]
display block
margin-bottom 16px
font-size 3em

View file

@ -1,6 +1,6 @@
<mk-messaging-home-widget>
<virtual if={ data.design == 0 }>
<p class="title"><i class="fa fa-comments"></i>%i18n:desktop.tags.mk-messaging-home-widget.title%</p>
<p class="title">%fa:comments%%i18n:desktop.tags.mk-messaging-home-widget.title%</p>
</virtual>
<mk-messaging ref="index" compact={ true }/>
<style>
@ -21,7 +21,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> mk-messaging

View file

@ -1,7 +1,7 @@
<mk-notifications-home-widget>
<virtual if={ !data.compact }>
<p class="title"><i class="fa fa-bell-o"></i>%i18n:desktop.tags.mk-notifications-home-widget.title%</p>
<button onclick={ settings } title="%i18n:desktop.tags.mk-notifications-home-widget.settings%"><i class="fa fa-cog"></i></button>
<p class="title">%fa:R bell%%i18n:desktop.tags.mk-notifications-home-widget.title%</p>
<button onclick={ settings } title="%i18n:desktop.tags.mk-notifications-home-widget.settings%">%fa:cog%</button>
</virtual>
<mk-notifications/>
<style>
@ -21,7 +21,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> button

View file

@ -1,8 +1,8 @@
<mk-photo-stream-home-widget data-melt={ data.design == 2 }>
<virtual if={ data.design == 0 }>
<p class="title"><i class="fa fa-camera"></i>%i18n:desktop.tags.mk-photo-stream-home-widget.title%</p>
<p class="title">%fa:camera%%i18n:desktop.tags.mk-photo-stream-home-widget.title%</p>
</virtual>
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="initializing" if={ initializing }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<div class="stream" if={ !initializing && images.length > 0 }>
<virtual each={ image in images }>
<div class="img" style={ 'background-image: url(' + image.url + '?thumbnail&size=256)' }></div>
@ -37,7 +37,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> .stream
@ -65,7 +65,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -2,7 +2,7 @@
<mk-post-form if={ place == 'main' }/>
<virtual if={ place != 'main' }>
<virtual if={ data.design == 0 }>
<p class="title"><i class="fa fa-pencil"></i>%i18n:desktop.tags.mk-post-form-home-widget.title%</p>
<p class="title">%fa:pencil-alt%%i18n:desktop.tags.mk-post-form-home-widget.title%</p>
</virtual>
<textarea disabled={ posting } ref="text" onkeydown={ onkeydown } placeholder="%i18n:desktop.tags.mk-post-form-home-widget.placeholder%"></textarea>
<button onclick={ post } disabled={ posting }>%i18n:desktop.tags.mk-post-form-home-widget.post%</button>
@ -25,7 +25,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> textarea

View file

@ -1,15 +1,15 @@
<mk-recommended-polls-home-widget>
<virtual if={ !data.compact }>
<p class="title"><i class="fa fa-pie-chart"></i>%i18n:desktop.tags.mk-recommended-polls-home-widget.title%</p>
<button onclick={ fetch } title="%i18n:desktop.tags.mk-recommended-polls-home-widget.refresh%"><i class="fa fa-refresh"></i></button>
<p class="title">%fa:pie-chart%%i18n:desktop.tags.mk-recommended-polls-home-widget.title%</p>
<button onclick={ fetch } title="%i18n:desktop.tags.mk-recommended-polls-home-widget.refresh%">%fa:refresh%</button>
</virtual>
<div class="poll" if={ !loading && poll != null }>
<p if={ poll.text }><a href="/{ poll.user.username }/{ poll.id }">{ poll.text }</a></p>
<p if={ !poll.text }><a href="/{ poll.user.username }/{ poll.id }"><i class="fa fa-link"></i></a></p>
<p if={ !poll.text }><a href="/{ poll.user.username }/{ poll.id }">%fa:link%</a></p>
<mk-poll post={ poll }/>
</div>
<p class="empty" if={ !loading && poll == null }>%i18n:desktop.tags.mk-recommended-polls-home-widget.nothing%</p>
<p class="loading" if={ loading }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="loading" if={ loading }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style>
:scope
display block
@ -26,7 +26,7 @@
color #888
border-bottom solid 1px #eee
> i
> [data-fa]
margin-right 4px
> button
@ -69,7 +69,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -1,12 +1,12 @@
<mk-rss-reader-home-widget>
<virtual if={ !data.compact }>
<p class="title"><i class="fa fa-rss-square"></i>RSS</p>
<button onclick={ settings } title="設定"><i class="fa fa-cog"></i></button>
<p class="title">%fa:rss-square%RSS</p>
<button onclick={ settings } title="設定">%fa:cog%</button>
</virtual>
<div class="feed" if={ !initializing }>
<virtual each={ item in items }><a href={ item.link } target="_blank">{ item.title }</a></virtual>
</div>
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="initializing" if={ initializing }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style>
:scope
display block
@ -23,7 +23,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> button
@ -61,7 +61,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -1,9 +1,9 @@
<mk-server-home-widget data-melt={ data.design == 2 }>
<virtual if={ data.design == 0 }>
<p class="title"><i class="fa fa-server"></i>%i18n:desktop.tags.mk-server-home-widget.title%</p>
<button onclick={ toggle } title="%i18n:desktop.tags.mk-server-home-widget.toggle%"><i class="fa fa-sort"></i></button>
<p class="title">%fa:server%%i18n:desktop.tags.mk-server-home-widget.title%</p>
<button onclick={ toggle } title="%i18n:desktop.tags.mk-server-home-widget.toggle%">%fa:sort%</button>
</virtual>
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="initializing" if={ initializing }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<mk-server-home-widget-cpu-and-memory-usage if={ !initializing } show={ data.view == 0 } connection={ connection }/>
<mk-server-home-widget-cpu if={ !initializing } show={ data.view == 1 } connection={ connection } meta={ meta }/>
<mk-server-home-widget-memory if={ !initializing } show={ data.view == 2 } connection={ connection }/>
@ -31,7 +31,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> button
@ -57,7 +57,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>
@ -235,7 +235,7 @@
<mk-server-home-widget-cpu>
<mk-server-home-widget-pie ref="pie"/>
<div>
<p><i class="fa fa-microchip"></i>CPU</p>
<p>%fa:microchip%CPU</p>
<p>{ cores } Cores</p>
<p>{ model }</p>
</div>
@ -261,7 +261,7 @@
&:first-child
font-weight bold
> i
> [data-fa]
margin-right 4px
&:after
@ -292,7 +292,7 @@
<mk-server-home-widget-memory>
<mk-server-home-widget-pie ref="pie"/>
<div>
<p><i class="fa fa-flask"></i>Memory</p>
<p>%fa:flask%Memory</p>
<p>Total: { bytesToSize(total, 1) }</p>
<p>Used: { bytesToSize(used, 1) }</p>
<p>Free: { bytesToSize(free, 1) }</p>
@ -319,7 +319,7 @@
&:first-child
font-weight bold
> i
> [data-fa]
margin-right 4px
&:after
@ -358,7 +358,7 @@
<mk-server-home-widget-disk>
<mk-server-home-widget-pie ref="pie"/>
<div>
<p><i class="fa fa-hdd-o"></i>Storage</p>
<p>%fa:R hdd%Storage</p>
<p>Total: { bytesToSize(total, 1) }</p>
<p>Available: { bytesToSize(available, 1) }</p>
<p>Used: { bytesToSize(used, 1) }</p>
@ -385,7 +385,7 @@
&:first-child
font-weight bold
> i
> [data-fa]
margin-right 4px
&:after

View file

@ -5,7 +5,7 @@
<div ref="slideA" class="slide a"></div>
<div ref="slideB" class="slide b"></div>
</div>
<button onclick={ resize }><i class="fa fa-expand"></i></button>
<button onclick={ resize }>%fa:expand%</button>
<style>
:scope
display block

View file

@ -3,10 +3,11 @@
<div class="loading" if={ isLoading }>
<mk-ellipsis-icon/>
</div>
<p class="empty" if={ isEmpty && !isLoading }><i class="fa fa-comments-o"></i>自分の投稿や、自分がフォローしているユーザーの投稿が表示されます。</p>
<p class="empty" if={ isEmpty && !isLoading }>%fa:R comments%自分の投稿や、自分がフォローしているユーザーの投稿が表示されます。</p>
<mk-timeline ref="timeline" hide={ isLoading }>
<yield to="footer">
<i class="fa fa-moon-o" if={ !parent.moreLoading }></i><i class="fa fa-spinner fa-pulse fa-fw" if={ parent.moreLoading }></i>
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual>
<virtual if={ parent.moreLoading }>%fa:spinner .pluse .fw%</virtual>
</yield/>
</mk-timeline>
<style>
@ -30,7 +31,7 @@
text-align center
color #999
> i
> [data-fa]
display block
margin-bottom 16px
font-size 3em

View file

@ -1,5 +1,5 @@
<mk-tips-home-widget>
<p ref="tip"><i class="fa fa-lightbulb-o"></i><span ref="text"></span></p>
<p ref="tip">%fa:R lightbulb%<span ref="text"></span></p>
<style>
:scope
display block
@ -13,7 +13,7 @@
font-size 0.7em
color #999
> i
> [data-fa]
margin-right 4px
kbd

View file

@ -1,14 +1,14 @@
<mk-trends-home-widget>
<virtual if={ !data.compact }>
<p class="title"><i class="fa fa-fire"></i>%i18n:desktop.tags.mk-trends-home-widget.title%</p>
<button onclick={ fetch } title="%i18n:desktop.tags.mk-trends-home-widget.refresh%"><i class="fa fa-refresh"></i></button>
<p class="title">%fa:fire%%i18n:desktop.tags.mk-trends-home-widget.title%</p>
<button onclick={ fetch } title="%i18n:desktop.tags.mk-trends-home-widget.refresh%">%fa:refresh%</button>
</virtual>
<div class="post" if={ !loading && post != null }>
<p class="text"><a href="/{ post.user.username }/{ post.id }">{ post.text }</a></p>
<p class="author"><a href="/{ post.user.username }">@{ post.user.username }</a></p>
</div>
<p class="empty" if={ !loading && post == null }>%i18n:desktop.tags.mk-trends-home-widget.nothing%</p>
<p class="loading" if={ loading }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="loading" if={ loading }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style>
:scope
display block
@ -25,7 +25,7 @@
color #888
border-bottom solid 1px #eee
> i
> [data-fa]
margin-right 4px
> button
@ -71,7 +71,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -1,7 +1,7 @@
<mk-user-recommendation-home-widget>
<virtual if={ !data.compact }>
<p class="title"><i class="fa fa-users"></i>%i18n:desktop.tags.mk-user-recommendation-home-widget.title%</p>
<button onclick={ refresh } title="%i18n:desktop.tags.mk-user-recommendation-home-widget.refresh%"><i class="fa fa-refresh"></i></button>
<p class="title">%fa:users%%i18n:desktop.tags.mk-user-recommendation-home-widget.title%</p>
<button onclick={ refresh } title="%i18n:desktop.tags.mk-user-recommendation-home-widget.refresh%">%fa:refresh%</button>
</virtual>
<div class="user" if={ !loading && users.length != 0 } each={ _user in users }>
<a class="avatar-anchor" href={ '/' + _user.username }>
@ -14,7 +14,7 @@
<mk-follow-button user={ _user }/>
</div>
<p class="empty" if={ !loading && users.length == 0 }>%i18n:desktop.tags.mk-user-recommendation-home-widget.no-one%</p>
<p class="loading" if={ loading }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="loading" if={ loading }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style>
:scope
display block
@ -31,7 +31,7 @@
color #888
border-bottom solid 1px #eee
> i
> [data-fa]
margin-right 4px
> button
@ -110,7 +110,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -1,6 +1,6 @@
<mk-home data-customize={ opts.customize }>
<div class="customize" if={ opts.customize }>
<a href="/"><i class="fa fa-check"></i>完了</a>
<a href="/">%fa:check%完了</a>
<div>
<div class="adder">
<p>ウィジェットを追加:</p>
@ -96,7 +96,7 @@
background darken($theme-color, 10%)
transition background 0s ease
> i
> [data-fa]
margin-right 8px
> div
@ -221,7 +221,7 @@
}
if (this.opts.customize) {
dialog('<i class="fa fa-info-circle"></i>カスタマイズのヒント',
dialog('%fa:info-circle%カスタマイズのヒント',
'<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p>' +
'<p>一部のウィジェットは、<strong><strong></strong>クリック</strong>することで表示を変更することができます。</p>' +
'<p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p>' +

View file

@ -1,7 +1,7 @@
<mk-input-dialog>
<mk-window ref="window" is-modal={ true } width={ '500px' }>
<yield to="header">
<i class="fa fa-i-cursor"></i>{ parent.title }
%fa:i-cursor%{ parent.title }
</yield>
<yield to="content">
<div class="body">
@ -19,7 +19,7 @@
> mk-window
[data-yield='header']
> i
> [data-fa]
margin-right 4px
[data-yield='content']

View file

@ -1,6 +1,6 @@
<mk-messaging-room-window>
<mk-window ref="window" is-modal={ false } width={ '500px' } height={ '560px' } popout={ popout }>
<yield to="header"><i class="fa fa-comments"></i>メッセージ: { parent.user.name }</yield>
<yield to="header">%fa:comments%メッセージ: { parent.user.name }</yield>
<yield to="content">
<mk-messaging-room user={ parent.user }/>
</yield>
@ -9,7 +9,7 @@
:scope
> mk-window
[data-yield='header']
> i
> [data-fa]
margin-right 4px
[data-yield='content']

View file

@ -1,6 +1,6 @@
<mk-messaging-window>
<mk-window ref="window" is-modal={ false } width={ '500px' } height={ '560px' }>
<yield to="header"><i class="fa fa-comments"></i>メッセージ</yield>
<yield to="header">%fa:comments%メッセージ</yield>
<yield to="content">
<mk-messaging ref="index"/>
</yield>
@ -9,7 +9,7 @@
:scope
> mk-window
[data-yield='header']
> i
> [data-fa]
margin-right 4px
[data-yield='content']

View file

@ -16,7 +16,7 @@
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a>
<div class="text">
<p><i class="fa fa-retweet"></i><a href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>{ notification.post.user.name }</a></p><a class="post-ref" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post.repost) }</a>
<p>%fa:retweet%<a href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>{ notification.post.user.name }</a></p><a class="post-ref" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post.repost) }</a>
</div>
</virtual>
<virtual if={ notification.type == 'quote' }>
@ -24,7 +24,7 @@
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a>
<div class="text">
<p><i class="fa fa-quote-left"></i><a href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>{ notification.post.user.name }</a></p><a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
<p>%fa:quote-left%<a href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>{ notification.post.user.name }</a></p><a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div>
</virtual>
<virtual if={ notification.type == 'follow' }>
@ -32,7 +32,7 @@
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a>
<div class="text">
<p><i class="fa fa-user-plus"></i><a href={ '/' + notification.user.username } data-user-preview={ notification.user.id }>{ notification.user.name }</a></p>
<p>%fa:user-plus%<a href={ '/' + notification.user.username } data-user-preview={ notification.user.id }>{ notification.user.name }</a></p>
</div>
</virtual>
<virtual if={ notification.type == 'reply' }>
@ -40,7 +40,7 @@
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a>
<div class="text">
<p><i class="fa fa-reply"></i><a href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>{ notification.post.user.name }</a></p><a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
<p>%fa:reply%<a href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>{ notification.post.user.name }</a></p><a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div>
</virtual>
<virtual if={ notification.type == 'mention' }>
@ -48,7 +48,7 @@
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a>
<div class="text">
<p><i class="fa fa-at"></i><a href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>{ notification.post.user.name }</a></p><a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
<p>%fa:at%<a href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>{ notification.post.user.name }</a></p><a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div>
</virtual>
<virtual if={ notification.type == 'poll_vote' }>
@ -56,18 +56,18 @@
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a>
<div class="text">
<p><i class="fa fa-pie-chart"></i><a href={ '/' + notification.user.username } data-user-preview={ notification.user.id }>{ notification.user.name }</a></p><a class="post-ref" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
<p>%fa:pie-chart%<a href={ '/' + notification.user.username } data-user-preview={ notification.user.id }>{ notification.user.name }</a></p><a class="post-ref" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div>
</virtual>
</div>
<p class="date" if={ i != notifications.length - 1 && notification._date != notifications[i + 1]._date }><span><i class="fa fa-angle-up"></i>{ notification._datetext }</span><span><i class="fa fa-angle-down"></i>{ notifications[i + 1]._datetext }</span></p>
<p class="date" if={ i != notifications.length - 1 && notification._date != notifications[i + 1]._date }><span>%fa:angle-up%{ notification._datetext }</span><span>%fa:angle-down%{ notifications[i + 1]._datetext }</span></p>
</virtual>
</div>
<button class="more { fetching: fetchingMoreNotifications }" if={ moreNotifications } onclick={ fetchMoreNotifications } disabled={ fetchingMoreNotifications }>
<i class="fa fa-spinner fa-pulse fa-fw" if={ fetchingMoreNotifications }></i>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:desktop.tags.mk-notifications.more%' }
<virtual if={ fetchingMoreNotifications }>%fa:spinner .pluse .fw%</virtual>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:desktop.tags.mk-notifications.more%' }
</button>
<p class="empty" if={ notifications.length == 0 && !loading }>ありません!</p>
<p class="loading" if={ loading }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="loading" if={ loading }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style>
:scope
display block
@ -187,7 +187,7 @@
&.fetching
cursor wait
> i
> [data-fa]
margin-right 4px
> .empty
@ -202,7 +202,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -150,7 +150,7 @@
</mk-entrance>
<mk-entrance-signin>
<a class="help" href={ _ABOUT_URL_ + '/help' } title="お困りですか?"><i class="fa fa-question"></i></a>
<a class="help" href={ _ABOUT_URL_ + '/help' } title="お困りですか?">%fa:question%</a>
<div class="form">
<h1><img if={ user } src={ user.avatar_url + '?thumbnail&size=32' }/>
<p>{ user ? user.name : 'アカウント' }</p>
@ -194,7 +194,7 @@
&:active
color #222
> i
> [data-fa]
padding 14px
> .form
@ -295,7 +295,7 @@
<mk-entrance-signup>
<mk-signup/>
<button class="cancel" type="button" onclick={ parent.signin } title="キャンセル"><i class="fa fa-times"></i></button>
<button class="cancel" type="button" onclick={ parent.signin } title="キャンセル">%fa:times%</button>
<style>
:scope
display block
@ -335,7 +335,7 @@
&:active
color #222
> i
> [data-fa]
padding 14px
</style>

View file

@ -1,9 +1,9 @@
<mk-post-page>
<mk-ui ref="ui">
<main if={ !parent.fetching }>
<a if={ parent.post.next } href={ parent.post.next }><i class="fa fa-angle-up"></i>%i18n:desktop.tags.mk-post-page.next%</a>
<a if={ parent.post.next } href={ parent.post.next }>%fa:angle-up%%i18n:desktop.tags.mk-post-page.next%</a>
<mk-post-detail ref="detail" post={ parent.post }/>
<a if={ parent.post.prev } href={ parent.post.prev }><i class="fa fa-angle-down"></i>%i18n:desktop.tags.mk-post-page.prev%</a>
<a if={ parent.post.prev } href={ parent.post.prev }>%fa:angle-down%%i18n:desktop.tags.mk-post-page.prev%</a>
</main>
</mk-ui>
<style>
@ -23,7 +23,7 @@
&:last-child
margin-top 4px
> i
> [data-fa]
margin-right 4px
> mk-post-detail

View file

@ -1,7 +1,7 @@
<mk-selectdrive-page>
<mk-drive-browser ref="browser" multiple={ multiple }/>
<div>
<button class="upload" title="%i18n:desktop.tags.mk-selectdrive-page.upload%" onclick={ upload }><i class="fa fa-upload"></i></button>
<button class="upload" title="%i18n:desktop.tags.mk-selectdrive-page.upload%" onclick={ upload }>%fa:upload%</button>
<button class="cancel" onclick={ close }>%i18n:desktop.tags.mk-selectdrive-page.cancel%</button>
<button class="ok" onclick={ ok }>%i18n:desktop.tags.mk-selectdrive-page.ok%</button>
</div>

View file

@ -1,8 +1,8 @@
<mk-post-detail title={ title }>
<div class="main">
<button class="read-more" if={ p.reply && p.reply.reply_id && context == null } title="会話をもっと読み込む" onclick={ loadContext } disabled={ contextFetching }>
<i class="fa fa-ellipsis-v" if={ !contextFetching }></i>
<i class="fa fa-spinner fa-pulse" if={ contextFetching }></i>
<virtual if={ !contextFetching }>%fa:ellipsis-v%</virtual>
<virtual if={ contextFetching }>%fa:spinner .pluse%</virtual>
</button>
<div class="context">
<virtual each={ post in context }>
@ -17,7 +17,7 @@
<a class="avatar-anchor" href={ '/' + post.user.username } data-user-preview={ post.user_id }>
<img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/>
</a>
<i class="fa fa-retweet"></i><a class="name" href={ '/' + post.user.username }>
%fa:retweet%<a class="name" href={ '/' + post.user.username }>
{ post.user.name }
</a>
がRepost
@ -44,16 +44,16 @@
<footer>
<mk-reactions-viewer post={ p }/>
<button onclick={ reply } title="返信">
<i class="fa fa-reply"></i><p class="count" if={ p.replies_count > 0 }>{ p.replies_count }</p>
%fa:reply%<p class="count" if={ p.replies_count > 0 }>{ p.replies_count }</p>
</button>
<button onclick={ repost } title="Repost">
<i class="fa fa-retweet"></i><p class="count" if={ p.repost_count > 0 }>{ p.repost_count }</p>
%fa:retweet%<p class="count" if={ p.repost_count > 0 }>{ p.repost_count }</p>
</button>
<button class={ reacted: p.my_reaction != null } onclick={ react } ref="reactButton" title="リアクション">
<i class="fa fa-plus"></i><p class="count" if={ p.reactions_count > 0 }>{ p.reactions_count }</p>
%fa:plus%<p class="count" if={ p.reactions_count > 0 }>{ p.reactions_count }</p>
</button>
<button onclick={ menu } ref="menuButton">
<i class="fa fa-ellipsis-h"></i>
%fa:ellipsis-h%
</button>
</footer>
</article>

View file

@ -7,17 +7,17 @@
<div class="img" style="background-image: url({ url + '?thumbnail&size=64' })" title={ name }></div>
<img class="remove" onclick={ removeFile } src="/assets/desktop/remove.png" title="%i18n:desktop.tags.mk-post-form.attach-cancel%" alt=""/>
</li>
<li class="add" if={ files.length < 4 } title="%i18n:desktop.tags.mk-post-form.attach-media-from-local%" onclick={ selectFile }><i class="fa fa-plus"></i></li>
<li class="add" if={ files.length < 4 } title="%i18n:desktop.tags.mk-post-form.attach-media-from-local%" onclick={ selectFile }>%fa:plus%</li>
</ul>
<p class="remain">{ 4 - files.length }/4</p>
</div>
<mk-poll-editor if={ poll } ref="poll" ondestroy={ onPollDestroyed }/>
</div>
<mk-uploader ref="uploader"/>
<button ref="upload" title="%i18n:desktop.tags.mk-post-form.attach-media-from-local%" onclick={ selectFile }><i class="fa fa-upload"></i></button>
<button ref="drive" title="%i18n:desktop.tags.mk-post-form.attach-media-from-drive%" onclick={ selectFileFromDrive }><i class="fa fa-cloud"></i></button>
<button class="kao" title="%i18n:desktop.tags.mk-post-form.insert-a-kao%" onclick={ kao }><i class="fa fa-smile-o"></i></button>
<button class="poll" title="%i18n:desktop.tags.mk-post-form.create-poll%" onclick={ addPoll }><i class="fa fa-pie-chart"></i></button>
<button ref="upload" title="%i18n:desktop.tags.mk-post-form.attach-media-from-local%" onclick={ selectFile }>%fa:upload%</button>
<button ref="drive" title="%i18n:desktop.tags.mk-post-form.attach-media-from-drive%" onclick={ selectFileFromDrive }>%fa:cloud%</button>
<button class="kao" title="%i18n:desktop.tags.mk-post-form.insert-a-kao%" onclick={ kao }>%fa:R smile%</button>
<button class="poll" title="%i18n:desktop.tags.mk-post-form.create-poll%" onclick={ addPoll }>%fa:pie-chart%</button>
<p class="text-count { over: refs.text.value.length > 1000 }">{ '%i18n:desktop.tags.mk-post-form.text-remain%'.replace('{}', 1000 - refs.text.value.length) }</p>
<button class={ wait: wait } ref="submit" disabled={ wait || (refs.text.value.length == 0 && files.length == 0 && !poll && !repost) } onclick={ post }>
{ wait ? '%i18n:desktop.tags.mk-post-form.posting%' : submitText }<mk-ellipsis if={ wait }/>

View file

@ -1,7 +1,7 @@
<mk-repost-form-window>
<mk-window ref="window" is-modal={ true }>
<yield to="header">
<i class="fa fa-retweet"></i>%i18n:desktop.tags.mk-repost-form-window.title%
%fa:retweet%%i18n:desktop.tags.mk-repost-form-window.title%
</yield>
<yield to="content">
<mk-repost-form ref="form" post={ parent.opts.post }/>
@ -11,7 +11,7 @@
:scope
> mk-window
[data-yield='header']
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -2,8 +2,13 @@
<div class="loading" if={ isLoading }>
<mk-ellipsis-icon/>
</div>
<p class="empty" if={ isEmpty }><i class="fa fa-search"></i>「{ query }」に関する投稿は見つかりませんでした。</p>
<mk-timeline ref="timeline"><yield to="footer"><i class="fa fa-moon-o" if={ !parent.moreLoading }></i><i class="fa fa-spinner fa-pulse fa-fw" if={ parent.moreLoading }></i></yield/>
<p class="empty" if={ isEmpty }>%fa:search%「{ query }」に関する投稿は見つかりませんでした。</p>
<mk-timeline ref="timeline">
<yield to="footer">
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual>
<virtual if={ parent.moreLoading }>%fa:spinner .pluse .fw%</virtual>
</yield/>
</mk-timeline>
<style>
:scope
display block
@ -20,7 +25,7 @@
text-align center
color #999
> i
> [data-fa]
display block
margin-bottom 16px
font-size 3em

View file

@ -7,7 +7,7 @@
<yield to="content">
<mk-drive-browser ref="browser" multiple={ parent.multiple }/>
<div>
<button class="upload" title="PCからドライブにファイルをアップロード" onclick={ parent.upload }><i class="fa fa-upload"></i></button>
<button class="upload" title="PCからドライブにファイルをアップロード" onclick={ parent.upload }>%fa:upload%</button>
<button class="cancel" onclick={ parent.close }>キャンセル</button>
<button class="ok" disabled={ parent.multiple && parent.files.length == 0 } onclick={ parent.ok }>決定</button>
</div>
@ -18,7 +18,7 @@
> mk-window
[data-yield='header']
> mk-raw
> i
> [data-fa]
margin-right 4px
.count
@ -138,7 +138,7 @@
this.files = [];
this.multiple = this.opts.multiple != null ? this.opts.multiple : false;
this.title = this.opts.title || '<i class="fa fa-file-o"></i>ファイルを選択';
this.title = this.opts.title || '%fa:file-o%ファイルを選択';
this.on('mount', () => {
this.refs.window.refs.browser.on('selected', file => {

View file

@ -16,7 +16,7 @@
> mk-window
[data-yield='header']
> mk-raw
> i
> [data-fa]
margin-right 4px
[data-yield='content']
@ -92,7 +92,7 @@
<script>
this.files = [];
this.title = this.opts.title || '<i class="fa fa-folder-o"></i>フォルダを選択';
this.title = this.opts.title || '%fa:folder-o%フォルダを選択';
this.on('mount', () => {
this.refs.window.on('closed', () => {

View file

@ -1,6 +1,6 @@
<mk-set-avatar-suggestion onclick={ set }>
<p><b>アバターを設定</b>してみませんか?
<button onclick={ close }><i class="fa fa-times"></i></button>
<button onclick={ close }>%fa:times%</button>
</p>
<style>
:scope

View file

@ -1,6 +1,6 @@
<mk-set-banner-suggestion onclick={ set }>
<p><b>バナーを設定</b>してみませんか?
<button onclick={ close }><i class="fa fa-times"></i></button>
<button onclick={ close }>%fa:times%</button>
</p>
<style>
:scope

View file

@ -1,6 +1,6 @@
<mk-settings-window>
<mk-window ref="window" is-modal={ true } width={ '700px' } height={ '550px' }>
<yield to="header"><i class="fa fa-cog"></i>設定</yield>
<yield to="header">%fa:cog%設定</yield>
<yield to="content">
<mk-settings/>
</yield>
@ -9,7 +9,7 @@
:scope
> mk-window
[data-yield='header']
> i
> [data-fa]
margin-right 4px
[data-yield='content']

View file

@ -1,14 +1,14 @@
<mk-settings>
<div class="nav">
<p class={ active: page == 'account' } onmousedown={ setPage.bind(null, 'account') }><i class="fa fa-fw fa-user"></i>アカウント</p>
<p class={ active: page == 'web' } onmousedown={ setPage.bind(null, 'web') }><i class="fa fa-fw fa-desktop"></i>Web</p>
<p class={ active: page == 'notification' } onmousedown={ setPage.bind(null, 'notification') }><i class="fa fa-fw fa-bell-o"></i>通知</p>
<p class={ active: page == 'drive' } onmousedown={ setPage.bind(null, 'drive') }><i class="fa fa-fw fa-cloud"></i>ドライブ</p>
<p class={ active: page == 'apps' } onmousedown={ setPage.bind(null, 'apps') }><i class="fa fa-fw fa-puzzle-piece"></i>アプリ</p>
<p class={ active: page == 'twitter' } onmousedown={ setPage.bind(null, 'twitter') }><i class="fa fa-fw fa-twitter"></i>Twitter</p>
<p class={ active: page == 'signin' } onmousedown={ setPage.bind(null, 'signin') }><i class="fa fa-fw fa-sign-in"></i>ログイン履歴</p>
<p class={ active: page == 'password' } onmousedown={ setPage.bind(null, 'password') }><i class="fa fa-fw fa-unlock-alt"></i>%i18n:desktop.tags.mk-settings.password%</p>
<p class={ active: page == 'api' } onmousedown={ setPage.bind(null, 'api') }><i class="fa fa-fw fa-key"></i>API</p>
<p class={ active: page == 'account' } onmousedown={ setPage.bind(null, 'account') }>%fa:user .fw%アカウント</p>
<p class={ active: page == 'web' } onmousedown={ setPage.bind(null, 'web') }>%fa:desktop .fw%Web</p>
<p class={ active: page == 'notification' } onmousedown={ setPage.bind(null, 'notification') }>%fa:R bell .fw%通知</p>
<p class={ active: page == 'drive' } onmousedown={ setPage.bind(null, 'drive') }>%fa:cloud .fw%ドライブ</p>
<p class={ active: page == 'apps' } onmousedown={ setPage.bind(null, 'apps') }>%fa:puzzle-piece .fw%アプリ</p>
<p class={ active: page == 'twitter' } onmousedown={ setPage.bind(null, 'twitter') }>%fa:twitter .fw%Twitter</p>
<p class={ active: page == 'signin' } onmousedown={ setPage.bind(null, 'signin') }>%fa:sign-in .fw%ログイン履歴</p>
<p class={ active: page == 'password' } onmousedown={ setPage.bind(null, 'password') }>%fa:unlock-alt .fw%%i18n:desktop.tags.mk-settings.password%</p>
<p class={ active: page == 'api' } onmousedown={ setPage.bind(null, 'api') }>%fa:key .fw%API</p>
</div>
<div class="pages">
<section class="account" show={ page == 'account' }>
@ -111,7 +111,7 @@
user-select none
transition margin-left 0.2s ease
> i
> [data-fa]
margin-right 4px
&:hover

View file

@ -1,7 +1,7 @@
<mk-sub-post-content>
<div class="body">
<a class="reply" if={ post.reply_id }>
<i class="fa fa-reply"></i>
%fa:reply%
</a>
<span ref="text"></span>
<a class="quote" if={ post.repost_id } href={ '/post:' + post.repost_id }>RP: ...</a>

View file

@ -1,7 +1,7 @@
<mk-timeline>
<virtual each={ post, i in posts }>
<mk-timeline-post post={ post }/>
<p class="date" if={ i != posts.length - 1 && post._date != posts[i + 1]._date }><span><i class="fa fa-angle-up"></i>{ post._datetext }</span><span><i class="fa fa-angle-down"></i>{ posts[i + 1]._datetext }</span></p>
<p class="date" if={ i != posts.length - 1 && post._date != posts[i + 1]._date }><span>%fa:angle-up%{ post._datetext }</span><span>%fa:angle-down%{ posts[i + 1]._datetext }</span></p>
</virtual>
<footer data-yield="footer">
<yield from="footer"/>
@ -90,7 +90,7 @@
<a class="avatar-anchor" href={ '/' + post.user.username } data-user-preview={ post.user_id }>
<img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/>
</a>
<i class="fa fa-retweet"></i>{'%i18n:desktop.tags.mk-timeline-post.reposted-by%'.substr(0, '%i18n:desktop.tags.mk-timeline-post.reposted-by%'.indexOf('{'))}<a class="name" href={ '/' + post.user.username } data-user-preview={ post.user_id }>{ post.user.name }</a>{'%i18n:desktop.tags.mk-timeline-post.reposted-by%'.substr('%i18n:desktop.tags.mk-timeline-post.reposted-by%'.indexOf('}') + 1)}
%fa:retweet%{'%i18n:desktop.tags.mk-timeline-post.reposted-by%'.substr(0, '%i18n:desktop.tags.mk-timeline-post.reposted-by%'.indexOf('{'))}<a class="name" href={ '/' + post.user.username } data-user-preview={ post.user_id }>{ post.user.name }</a>{'%i18n:desktop.tags.mk-timeline-post.reposted-by%'.substr('%i18n:desktop.tags.mk-timeline-post.reposted-by%'.indexOf('}') + 1)}
</p>
<mk-time time={ post.created_at }/>
</div>
@ -114,7 +114,7 @@
<div class="text" ref="text">
<p class="channel" if={ p.channel != null }><a href={ _CH_URL_ + '/' + p.channel.id } target="_blank">{ p.channel.title }</a>:</p>
<a class="reply" if={ p.reply }>
<i class="fa fa-reply"></i>
%fa:reply%
</a>
<p class="dummy"></p>
<a class="quote" if={ p.repost != null }>RP:</a>
@ -123,23 +123,23 @@
<mk-images-viewer images={ p.media }/>
</div>
<mk-poll if={ p.poll } post={ p } ref="pollViewer"/>
<div class="repost" if={ p.repost }><i class="fa fa-quote-right fa-flip-horizontal"></i>
<div class="repost" if={ p.repost }>%fa:quote-right -flip-h%
<mk-post-preview class="repost" post={ p.repost }/>
</div>
</div>
<footer>
<mk-reactions-viewer post={ p } ref="reactionsViewer"/>
<button onclick={ reply } title="%i18n:desktop.tags.mk-timeline-post.reply%">
<i class="fa fa-reply"></i><p class="count" if={ p.replies_count > 0 }>{ p.replies_count }</p>
%fa:reply%<p class="count" if={ p.replies_count > 0 }>{ p.replies_count }</p>
</button>
<button onclick={ repost } title="%i18n:desktop.tags.mk-timeline-post.repost%">
<i class="fa fa-retweet"></i><p class="count" if={ p.repost_count > 0 }>{ p.repost_count }</p>
%fa:retweet%<p class="count" if={ p.repost_count > 0 }>{ p.repost_count }</p>
</button>
<button class={ reacted: p.my_reaction != null } onclick={ react } ref="reactButton" title="%i18n:desktop.tags.mk-timeline-post.add-reaction%">
<i class="fa fa-plus"></i><p class="count" if={ p.reactions_count > 0 }>{ p.reactions_count }</p>
%fa:plus%<p class="count" if={ p.reactions_count > 0 }>{ p.reactions_count }</p>
</button>
<button onclick={ menu } ref="menuButton">
<i class="fa fa-ellipsis-h"></i>
%fa:ellipsis-h%
</button>
<button onclick={ toggleDetail } title="%i18n:desktop.tags.mk-timeline-post.detail">
<i class="fa fa-caret-down" if={ !isDetailOpened }></i>
@ -378,7 +378,7 @@
> .repost
margin 8px 0
> i:first-child
> [data-fa]:first-child
position absolute
top -8px
left -8px

View file

@ -171,7 +171,7 @@
</mk-ui-header-search>
<mk-ui-header-post-button>
<button onclick={ post } title="%i18n:desktop.tags.mk-ui-header-post-button.post%"><i class="fa fa-pencil"></i></button>
<button onclick={ post } title="%i18n:desktop.tags.mk-ui-header-post-button.post%">%fa:pencil-alt%</button>
<style>
:scope
display inline-block
@ -215,7 +215,7 @@
<mk-ui-header-notifications>
<button data-active={ isOpen } onclick={ toggle } title="%i18n:desktop.tags.mk-ui-header-notifications.title%">
<i class="fa fa-bell-o icon"></i><i class="fa fa-circle badge" if={ hasUnreadNotifications }></i>
%fa:R bell%<virtual if={ hasUnreadNotifications }>%fa:circle%</virtual>
</button>
<div class="notifications" if={ isOpen }>
<mk-notifications/>
@ -245,11 +245,11 @@
&:active
color darken(#9eaba8, 30%)
> .icon
> [data-fa].icon
font-size 1.2em
line-height 48px
> .badge
> [data-fa].circle
margin-left -5px
vertical-align super
font-size 10px
@ -380,27 +380,27 @@
<virtual if={ SIGNIN }>
<li class="home { active: page == 'home' }">
<a href={ _URL_ }>
<i class="fa fa-home"></i>
%fa:home%
<p>%i18n:desktop.tags.mk-ui-header-nav.home%</p>
</a>
</li>
<li class="messaging">
<a onclick={ messaging }>
<i class="fa fa-comments"></i>
%fa:comments%
<p>%i18n:desktop.tags.mk-ui-header-nav.messaging%</p>
<i class="fa fa-circle" if={ hasUnreadMessagingMessages }></i>
<virtual if={ hasUnreadMessagingMessages }>%fa:circle%</virtual>
</a>
</li>
</virtual>
<li class="ch">
<a href={ _CH_URL_ } target="_blank">
<i class="fa fa-television"></i>
%fa:tv%
<p>%i18n:desktop.tags.mk-ui-header-nav.ch%</p>
</a>
</li>
<li class="info">
<a href="https://twitter.com/misskey_xyz" target="_blank">
<i class="fa fa-info"></i>
%fa:info%
<p>%i18n:desktop.tags.mk-ui-header-nav.info%</p>
</a>
</li>
@ -450,10 +450,10 @@
color darken(#9eaba8, 20%)
text-decoration none
> i:first-child
> [data-fa]:first-child
margin-right 8px
> i:last-child
> [data-fa]:last-child
margin-left 5px
vertical-align super
font-size 10px
@ -616,29 +616,29 @@
<mk-ui-header-account>
<button class="header" data-active={ isOpen.toString() } onclick={ toggle }>
<span class="username">{ I.username }<i class="fa fa-angle-down" if={ !isOpen }></i><i class="fa fa-angle-up" if={ isOpen }></i></span>
<span class="username">{ I.username }<virtual if={ !isOpen }>%fa:angle-down%</virtual><virtual if={ isOpen }>%fa:angle-up%</virtual></span>
<img class="avatar" src={ I.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</button>
<div class="menu" if={ isOpen }>
<ul>
<li>
<a href={ '/' + I.username }><i class="fa fa-user"></i>%i18n:desktop.tags.mk-ui-header-account.profile%<i class="fa fa-angle-right"></i></a>
<a href={ '/' + I.username }>%fa:user%%i18n:desktop.tags.mk-ui-header-account.profile%%fa:angle-right%</a>
</li>
<li onclick={ drive }>
<p><i class="fa fa-cloud"></i>%i18n:desktop.tags.mk-ui-header-account.drive%<i class="fa fa-angle-right"></i></p>
<p>%fa:cloud%%i18n:desktop.tags.mk-ui-header-account.drive%%fa:angle-right%</p>
</li>
<li>
<a href="/i/mentions"><i class="fa fa-at"></i>%i18n:desktop.tags.mk-ui-header-account.mentions%<i class="fa fa-angle-right"></i></a>
<a href="/i/mentions">%fa:at%%i18n:desktop.tags.mk-ui-header-account.mentions%%fa:angle-right%</a>
</li>
</ul>
<ul>
<li onclick={ settings }>
<p><i class="fa fa-cog"></i>%i18n:desktop.tags.mk-ui-header-account.settings%<i class="fa fa-angle-right"></i></p>
<p>%fa:cog%%i18n:desktop.tags.mk-ui-header-account.settings%%fa:angle-right%</p>
</li>
</ul>
<ul>
<li onclick={ signout }>
<p><i class="fa fa-power-off"></i>%i18n:desktop.tags.mk-ui-header-account.signout%<i class="fa fa-angle-right"></i></p>
<p>%fa:power-off%%i18n:desktop.tags.mk-ui-header-account.signout%%fa:angle-right%</p>
</li>
</ul>
</div>

View file

@ -5,8 +5,13 @@
<div class="loading" if={ isLoading }>
<mk-ellipsis-icon/>
</div>
<p class="empty" if={ isEmpty }><i class="fa fa-comments-o"></i>このユーザーはまだ何も投稿していないようです。</p>
<mk-timeline ref="timeline"><yield to="footer"><i class="fa fa-moon-o" if={ !parent.moreLoading }></i><i class="fa fa-spinner fa-pulse fa-fw" if={ parent.moreLoading }></i></yield/>
<p class="empty" if={ isEmpty }>%fa:R comments%このユーザーはまだ何も投稿していないようです。</p>
<mk-timeline ref="timeline">
<yield to="footer">
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual>
<virtual if={ parent.moreLoading }>%fa:spinner .pluse .fw%</virtual>
</yield/>
</mk-timeline>
<style>
:scope
display block
@ -40,7 +45,7 @@
text-align center
color #999
> i
> [data-fa]
display block
margin-bottom 16px
font-size 3em

View file

@ -48,12 +48,12 @@
<div class="title">
<p class="name" href={ '/' + user.username }>{ user.name }</p>
<p class="username">@{ user.username }</p>
<p class="location" if={ user.profile.location }><i class="fa fa-map-marker"></i>{ user.profile.location }</p>
<p class="location" if={ user.profile.location }>%fa:map-marker%{ user.profile.location }</p>
</div>
<footer>
<a href={ '/' + user.username } data-active={ parent.page == 'home' }><i class="fa fa-home"></i>概要</a>
<a href={ '/' + user.username + '/media' } data-active={ parent.page == 'media' }><i class="fa fa-picture-o"></i>メディア</a>
<a href={ '/' + user.username + '/graphs' } data-active={ parent.page == 'graphs' }><i class="fa fa-bar-chart"></i>グラフ</a>
<a href={ '/' + user.username } data-active={ parent.page == 'home' }>%fa:home%概要</a>
<a href={ '/' + user.username + '/media' } data-active={ parent.page == 'media' }>%fa:image%メディア</a>
<a href={ '/' + user.username + '/graphs' } data-active={ parent.page == 'graphs' }>%fa:bar-chart%グラフ</a>
</footer>
</div>
<style>
@ -230,15 +230,15 @@
</div>
<div class="description" if={ user.description }>{ user.description }</div>
<div class="birthday" if={ user.profile.birthday }>
<p><i class="fa fa-birthday-cake"></i>{ user.profile.birthday.replace('-', '年').replace('-', '月') + '日' } ({ age(user.profile.birthday) }歳)</p>
<p>%fa:birthday-cake%{ user.profile.birthday.replace('-', '年').replace('-', '月') + '日' } ({ age(user.profile.birthday) }歳)</p>
</div>
<div class="twitter" if={ user.twitter }>
<p><i class="fa fa-twitter"></i><a href={ 'https://twitter.com/' + user.twitter.screen_name } target="_blank">@{ user.twitter.screen_name }</a></p>
<p>%fa:twitter%<a href={ 'https://twitter.com/' + user.twitter.screen_name } target="_blank">@{ user.twitter.screen_name }</a></p>
</div>
<div class="status">
<p class="posts-count"><i class="fa fa-angle-right"></i><a>{ user.posts_count }</a><b>ポスト</b></p>
<p class="following"><i class="fa fa-angle-right"></i><a onclick={ showFollowing }>{ user.following_count }</a>人を<b>フォロー</b></p>
<p class="followers"><i class="fa fa-angle-right"></i><a onclick={ showFollowers }>{ user.followers_count }</a>人の<b>フォロワー</b></p>
<p class="posts-count">%fa:angle-right%<a>{ user.posts_count }</a><b>ポスト</b></p>
<p class="following">%fa:angle-right%<a onclick={ showFollowing }>{ user.following_count }</a>人を<b>フォロー</b></p>
<p class="followers">%fa:angle-right%<a onclick={ showFollowers }>{ user.followers_count }</a>人の<b>フォロワー</b></p>
</div>
<style>
:scope
@ -331,6 +331,8 @@
<mk-user-photos>
<p class="title"><i class="fa fa-camera"></i>%i18n:desktop.tags.mk-user.photos.title%</p>
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:desktop.tags.mk-user.photos.loading%<mk-ellipsis/></p>
<p class="title">%fa:camera%%i18n:desktop.tags.mk-user.photos.title%</p>
<p class="initializing" if={ initializing }>%fa:spinner .pluse .fw%%i18n:desktop.tags.mk-user.photos.loading%<mk-ellipsis/></p>
<div class="stream" if={ !initializing && images.length > 0 }>
<virtual each={ image in images }>
<div class="img" style={ 'background-image: url(' + image.url + '?thumbnail&size=256)' }></div>
@ -423,8 +425,8 @@
</mk-user-photos>
<mk-user-frequently-replied-users>
<p class="title"><i class="fa fa-users"></i>%i18n:desktop.tags.mk-user.frequently-replied-users.title%</p>
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:desktop.tags.mk-user.frequently-replied-users.loading%<mk-ellipsis/></p>
<p class="title">%fa:users%%i18n:desktop.tags.mk-user.frequently-replied-users.title%</p>
<p class="initializing" if={ initializing }>%fa:spinner .pluse .fw%%i18n:desktop.tags.mk-user.frequently-replied-users.loading%<mk-ellipsis/></p>
<div class="user" if={ !initializing && users.length != 0 } each={ _user in users }>
<a class="avatar-anchor" href={ '/' + _user.username }>
<img class="avatar" src={ _user.avatar_url + '?thumbnail&size=42' } alt="" data-user-preview={ _user.id }/>
@ -535,8 +537,8 @@
</mk-user-frequently-replied-users>
<mk-user-followers-you-know>
<p class="title"><i class="fa fa-users"></i>%i18n:desktop.tags.mk-user.followers-you-know.title%</p>
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:desktop.tags.mk-user.followers-you-know.loading%<mk-ellipsis/></p>
<p class="title">%fa:users%%i18n:desktop.tags.mk-user.followers-you-know.title%</p>
<p class="initializing" if={ initializing }>%fa:spinner .pluse .fw%%i18n:desktop.tags.mk-user.followers-you-know.loading%<mk-ellipsis/></p>
<div if={ !initializing && users.length > 0 }>
<virtual each={ user in users }>
<a href={ '/' + user.username }><img src={ user.avatar_url + '?thumbnail&size=64' } alt={ user.name }/></a>
@ -712,7 +714,7 @@
<mk-user-graphs>
<section>
<div>
<h1><i class="fa fa-pencil"></i>投稿</h1>
<h1>%fa:pencil-alt%投稿</h1>
<mk-user-graphs-activity-chart user={ opts.user }/>
</div>
</section>

View file

@ -15,7 +15,7 @@
<span if={ moreFetching }>読み込み中<mk-ellipsis/></span>
</button>
<p class="no" if={ !fetching && users.length == 0 }>{ opts.noUsers }</p>
<p class="fetching" if={ fetching }><i class="fa fa-spinner fa-pulse fa-fw"></i>読み込んでいます<mk-ellipsis/></p>
<p class="fetching" if={ fetching }>%fa:spinner .pluse .fw%読み込んでいます<mk-ellipsis/></p>
<style>
:scope
display block
@ -84,7 +84,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -1,9 +1,9 @@
<mk-activity-widget data-melt={ design == 2 }>
<virtual if={ design == 0 }>
<p class="title"><i class="fa fa-bar-chart"></i>%i18n:desktop.tags.mk-activity-widget.title%</p>
<button onclick={ toggle } title="%i18n:desktop.tags.mk-activity-widget.toggle%"><i class="fa fa-sort"></i></button>
<p class="title">%fa:bar-chart%%i18n:desktop.tags.mk-activity-widget.title%</p>
<button onclick={ toggle } title="%i18n:desktop.tags.mk-activity-widget.toggle%">%fa:sort%</button>
</virtual>
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="initializing" if={ initializing }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<mk-activity-widget-calender if={ !initializing && view == 0 } data={ [].concat(activity) }/>
<mk-activity-widget-chart if={ !initializing && view == 1 } data={ [].concat(activity) }/>
<style>
@ -27,7 +27,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> button
@ -53,7 +53,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -1,8 +1,8 @@
<mk-calendar-widget data-melt={ opts.design == 4 || opts.design == 5 }>
<virtual if={ opts.design == 0 || opts.design == 1 }>
<button onclick={ prev } title="%i18n:desktop.tags.mk-calendar-widget.prev%"><i class="fa fa-chevron-circle-left"></i></button>
<button onclick={ prev } title="%i18n:desktop.tags.mk-calendar-widget.prev%">%fa:chevron-circle-left%</button>
<p class="title">{ '%i18n:desktop.tags.mk-calendar-widget.title%'.replace('{1}', year).replace('{2}', month) }</p>
<button onclick={ next } title="%i18n:desktop.tags.mk-calendar-widget.next%"><i class="fa fa-chevron-circle-right"></i></button>
<button onclick={ next } title="%i18n:desktop.tags.mk-calendar-widget.next%">%fa:chevron-circle-right%</button>
</virtual>
<div class="calendar">
@ -41,7 +41,7 @@
color #888
box-shadow 0 1px rgba(0, 0, 0, 0.07)
> i
> [data-fa]
margin-right 4px
> button

View file

@ -5,8 +5,8 @@
<header ref="header" onmousedown={ onHeaderMousedown }>
<h1 data-yield="header"><yield from="header"/></h1>
<div>
<button class="popout" if={ popoutUrl } onmousedown={ repelMove } onclick={ popout } title="ポップアウト"><i class="fa fa-window-restore"></i></button>
<button class="close" if={ canClose } onmousedown={ repelMove } onclick={ close } title="閉じる"><i class="fa fa-times"></i></button>
<button class="popout" if={ popoutUrl } onmousedown={ repelMove } onclick={ popout } title="ポップアウト">%fa:window-restore%</button>
<button class="close" if={ canClose } onmousedown={ repelMove } onclick={ close } title="閉じる">%fa:times%</button>
</div>
</header>
<div class="content" data-yield="content"><yield from="content"/></div>
@ -171,7 +171,7 @@
&:active
color darken(#000, 30%)
> i
> [data-fa]
padding 0
width $header-height
line-height $header-height

View file

@ -10,13 +10,13 @@
<label>
<p class="caption">Named ID</p>
<input ref="nid" type="text" pattern="^[a-zA-Z0-9-]{3,30}$" placeholder="ex) misskey-for-ios" autocomplete="off" required="required" onkeyup={ onChangeNid }/>
<p class="info" if={ nidState == 'wait' } style="color:#999"><i class="fa fa-fw fa-spinner fa-pulse"></i>確認しています...</p>
<p class="info" if={ nidState == 'ok' } style="color:#3CB7B5"><i class="fa fa-fw fa-check"></i>利用できます</p>
<p class="info" if={ nidState == 'unavailable' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>既に利用されています</p>
<p class="info" if={ nidState == 'error' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>通信エラー</p>
<p class="info" if={ nidState == 'invalid-format' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>a~z、A~Z、0~9、-(ハイフン)が使えます</p>
<p class="info" if={ nidState == 'min-range' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>3文字以上でお願いします</p>
<p class="info" if={ nidState == 'max-range' } style="color:#FF1161"><i class="fa fa-fw fa-exclamation-triangle"></i>30文字以内でお願いします</p>
<p class="info" if={ nidState == 'wait' } style="color:#999">%fa:spinner .pluse .fw%確認しています...</p>
<p class="info" if={ nidState == 'ok' } style="color:#3CB7B5">%fa:fw check%利用できます</p>
<p class="info" if={ nidState == 'unavailable' } style="color:#FF1161">%fa:fw exclamation-triangle%既に利用されています</p>
<p class="info" if={ nidState == 'error' } style="color:#FF1161">%fa:fw exclamation-triangle%通信エラー</p>
<p class="info" if={ nidState == 'invalid-format' } style="color:#FF1161">%fa:fw exclamation-triangle%a~z、A~Z、0~9、-(ハイフン)が使えます</p>
<p class="info" if={ nidState == 'min-range' } style="color:#FF1161">%fa:fw exclamation-triangle%3文字以上でお願いします</p>
<p class="info" if={ nidState == 'max-range' } style="color:#FF1161">%fa:fw exclamation-triangle%30文字以内でお願いします</p>
</label>
</section>
<section class="description">
@ -71,7 +71,7 @@
<p>通知を操作する。</p>
</label>
</div>
<p><i class="fa fa-exclamation-triangle"></i>アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。</p>
<p>%fa:exclamation-triangle%アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。</p>
</section>
<button onclick={ onsubmit }>アプリ作成</button>
</form>
@ -91,7 +91,7 @@
color #616161
font-size 0.95em
> i
> [data-fa]
margin-right 0.25em
color #96adac
@ -100,7 +100,7 @@
margin 4px 0
font-size 0.8em
> i
> [data-fa]
margin-right 0.3em
section.permission
@ -141,7 +141,7 @@
font-size 0.8em
color #999
> i
> [data-fa]
margin-right 4px
[type=text]

View file

@ -2,8 +2,8 @@
<div class="body">
<header>
<h1>%i18n:mobile.tags.mk-drive-folder-selector.select-folder%</h1>
<button class="close" onclick={ cancel }><i class="fa fa-times"></i></button>
<button class="ok" onclick={ ok }><i class="fa fa-check"></i></button>
<button class="close" onclick={ cancel }>%fa:times%</button>
<button class="ok" onclick={ ok }>%fa:check%</button>
</header>
<mk-drive ref="browser" select-folder={ true }/>
</div>

View file

@ -2,8 +2,8 @@
<div class="body">
<header>
<h1>%i18n:mobile.tags.mk-drive-selector.select-file%<span class="count" if={ files.length > 0 }>({ files.length })</span></h1>
<button class="close" onclick={ cancel }><i class="fa fa-times"></i></button>
<button if={ opts.multiple } class="ok" onclick={ ok }><i class="fa fa-check"></i></button>
<button class="close" onclick={ cancel }>%fa:times%</button>
<button if={ opts.multiple } class="ok" onclick={ ok }>%fa:check%</button>
</header>
<mk-drive ref="browser" select-file={ true } multiple={ opts.multiple }/>
</div>

View file

@ -1,16 +1,16 @@
<mk-drive>
<nav ref="nav">
<p onclick={ goRoot }><i class="fa fa-cloud"></i>%i18n:mobile.tags.mk-drive.drive%</p>
<p onclick={ goRoot }>%fa:cloud%%i18n:mobile.tags.mk-drive.drive%</p>
<virtual each={ folder in hierarchyFolders }>
<span><i class="fa fa-angle-right"></i></span>
<span>%fa:angle-right%</span>
<p onclick={ move }>{ folder.name }</p>
</virtual>
<virtual if={ folder != null }>
<span><i class="fa fa-angle-right"></i></span>
<span>%fa:angle-right%</span>
<p>{ folder.name }</p>
</virtual>
<virtual if={ file != null }>
<span><i class="fa fa-angle-right"></i></span>
<span>%fa:angle-right%</span>
<p>{ file.name }</p>
</virtual>
</nav>
@ -81,7 +81,7 @@
&:last-child
font-weight bold
> i
> [data-fa]
margin-right 4px
> span

View file

@ -1,7 +1,7 @@
<mk-drive-file-viewer>
<div class="preview">
<img if={ kind == 'image' } src={ file.url } alt={ file.name } title={ file.name }>
<i if={ kind != 'image' } class="fa fa-file"></i>
<virtual if={ kind != 'image' }>%fa:file%</virtual>
<footer if={ kind == 'image' && file.properties && file.properties.width && file.properties.height }>
<span class="size">
<span class="width">{ file.properties.width }</span>
@ -23,26 +23,26 @@
<span class="separator"></span>
<span class="data-size">{ bytesToSize(file.datasize) }</span>
<span class="separator"></span>
<span class="created-at" onclick={ showCreatedAt }><i class="fa fa-clock-o"></i><mk-time time={ file.created_at }/></span>
<span class="created-at" onclick={ showCreatedAt }>%fa:R clock%<mk-time time={ file.created_at }/></span>
</div>
</div>
<div class="menu">
<div>
<a href={ file.url + '?download' } download={ file.name }>
<i class="fa fa-download"></i>%i18n:mobile.tags.mk-drive-file-viewer.download%
%fa:download%%i18n:mobile.tags.mk-drive-file-viewer.download%
</a>
<button onclick={ rename }>
<i class="fa fa-pencil"></i>%i18n:mobile.tags.mk-drive-file-viewer.rename%
%fa:pencil-alt%%i18n:mobile.tags.mk-drive-file-viewer.rename%
</button>
<button onclick={ move }>
<i class="fa fa-folder-open"></i>%i18n:mobile.tags.mk-drive-file-viewer.move%
%fa:folder-open%%i18n:mobile.tags.mk-drive-file-viewer.move%
</button>
</div>
</div>
<div class="hash">
<div>
<p>
<i class="fa fa-hashtag"></i>%i18n:mobile.tags.mk-drive-file-viewer.hash%
%fa:hashtag%%i18n:mobile.tags.mk-drive-file-viewer.hash%
</p>
<code>{ file.md5 }</code>
</div>
@ -114,7 +114,7 @@
> .created-at
color #bdbdbd
> i
> [data-fa]
margin-right 2px
> .menu
@ -149,7 +149,7 @@
border-color #444
box-shadow 0 1px 3px rgba(0, 0, 0, 0.075), inset 0 0 5px rgba(0, 0, 0, 0.2)
> i
> [data-fa]
margin-right 4px
> .hash
@ -167,7 +167,7 @@
color #555
font-size 0.9em
> i
> [data-fa]
margin-right 4px
> code

View file

@ -15,7 +15,7 @@
<p class="data-size">{ bytesToSize(file.datasize) }</p>
<p class="separator"></p>
<p class="created-at">
<i class="fa fa-clock-o"></i><mk-time time={ file.created_at }/>
%fa:R clock%<mk-time time={ file.created_at }/>
</p>
</footer>
</div>
@ -112,7 +112,7 @@
padding 0
color #BDBDBD
> i
> [data-fa]
margin-right 2px
&[data-is-selected]

View file

@ -1,6 +1,6 @@
<mk-drive-folder onclick={ onclick }>
<div class="container">
<p class="name"><i class="fa fa-folder"></i>{ folder.name }</p><i class="fa fa-angle-right"></i>
<p class="name">%fa:folder%{ folder.name }</p>%fa:angle-right%
</div>
<style>
:scope
@ -23,10 +23,10 @@
margin 0
padding 0
> i
> [data-fa]
margin-right 6px
> i
> [data-fa]
position absolute
top 0
bottom 0

View file

@ -1,6 +1,10 @@
<mk-follow-button>
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } onclick={ onclick } disabled={ wait }><i class="fa fa-minus" if={ !wait && user.is_following }></i><i class="fa fa-plus" if={ !wait && !user.is_following }></i><i class="fa fa-spinner fa-pulse fa-fw" if={ wait }></i>{ user.is_following ? '%i18n:mobile.tags.mk-follow-button.unfollow%' : '%i18n:mobile.tags.mk-follow-button.follow%' }</button>
<div class="init" if={ init }><i class="fa fa-spinner fa-pulse fa-fw"></i></div>
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } onclick={ onclick } disabled={ wait }>
<virtual if={ !wait && user.is_following }>%fa:minus%</virtual>
<virtual if={ !wait && !user.is_following }>%fa:plus%</virtual>
<virtual if={ wait }>%fa:spinner .pluse .fw%</virtual>{ user.is_following ? '%i18n:mobile.tags.mk-follow-button.unfollow%' : '%i18n:mobile.tags.mk-follow-button.follow%' }
</button>
<div class="init" if={ init }>%fa:spinner .pluse .fw%</div>
<style>
:scope
display block
@ -43,7 +47,7 @@
cursor wait !important
opacity 0.7
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -6,9 +6,9 @@
</virtual>
</div>
<p class="empty" if={ !fetching && users.length == 0 }>おすすめのユーザーは見つかりませんでした。</p>
<p class="fetching" if={ fetching }><i class="fa fa-spinner fa-pulse fa-fw"></i>読み込んでいます<mk-ellipsis/></p>
<p class="fetching" if={ fetching }>%fa:spinner .pluse .fw%読み込んでいます<mk-ellipsis/></p>
<a class="refresh" onclick={ refresh }>もっと見る</a>
<button class="close" onclick={ close } title="閉じる"><i class="fa fa-times"></i></button>
<button class="close" onclick={ close } title="閉じる">%fa:times%</button>
<style>
:scope
display block
@ -46,7 +46,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
> .refresh
@ -78,7 +78,7 @@
&:active
color #222
> i
> [data-fa]
padding 10px
</style>

View file

@ -9,41 +9,41 @@
<virtual if={ notification.type == 'repost' }>
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p><i class="fa fa-retweet"></i>{ notification.post.user.name }</p>
<p>%fa:retweet%{ notification.post.user.name }</p>
<p class="post-ref">{ getPostSummary(notification.post.repost) }</p>
</div>
</virtual>
<virtual if={ notification.type == 'quote' }>
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p><i class="fa fa-quote-left"></i>{ notification.post.user.name }</p>
<p>%fa:quote-left%{ notification.post.user.name }</p>
<p class="post-preview">{ getPostSummary(notification.post) }</p>
</div>
</virtual>
<virtual if={ notification.type == 'follow' }>
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p><i class="fa fa-user-plus"></i>{ notification.user.name }</p>
<p>%fa:user-plus%{ notification.user.name }</p>
</div>
</virtual>
<virtual if={ notification.type == 'reply' }>
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p><i class="fa fa-reply"></i>{ notification.post.user.name }</p>
<p>%fa:reply%{ notification.post.user.name }</p>
<p class="post-preview">{ getPostSummary(notification.post) }</p>
</div>
</virtual>
<virtual if={ notification.type == 'mention' }>
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p><i class="fa fa-at"></i>{ notification.post.user.name }</p>
<p>%fa:at%{ notification.post.user.name }</p>
<p class="post-preview">{ getPostSummary(notification.post) }</p>
</div>
</virtual>
<virtual if={ notification.type == 'poll_vote' }>
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p><i class="fa fa-pie-chart"></i>{ notification.user.name }</p>
<p>%fa:pie-chart%{ notification.user.name }</p>
<p class="post-ref">{ getPostSummary(notification.post) }</p>
</div>
</virtual>

View file

@ -18,7 +18,7 @@
</a>
<div class="text">
<p>
<i class="fa fa-retweet"></i>
%fa:retweet%
<a href={ '/' + notification.post.user.username }>{ notification.post.user.name }</a>
</p>
<a class="post-ref" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post.repost) }</a>
@ -30,7 +30,7 @@
</a>
<div class="text">
<p>
<i class="fa fa-quote-left"></i>
%fa:quote-left%
<a href={ '/' + notification.post.user.username }>{ notification.post.user.name }</a>
</p>
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
@ -42,7 +42,7 @@
</a>
<div class="text">
<p>
<i class="fa fa-user-plus"></i>
%fa:user-plus%
<a href={ '/' + notification.user.username }>{ notification.user.name }</a>
</p>
</div>
@ -53,7 +53,7 @@
</a>
<div class="text">
<p>
<i class="fa fa-reply"></i>
%fa:reply%
<a href={ '/' + notification.post.user.username }>{ notification.post.user.name }</a>
</p>
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
@ -65,7 +65,7 @@
</a>
<div class="text">
<p>
<i class="fa fa-at"></i>
%fa:at%
<a href={ '/' + notification.post.user.username }>{ notification.post.user.name }</a>
</p>
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
@ -77,7 +77,7 @@
</a>
<div class="text">
<p>
<i class="fa fa-pie-chart"></i>
%fa:pie-chart%
<a href={ '/' + notification.user.username }>{ notification.user.name }</a>
</p>
<a class="post-ref" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>

View file

@ -2,14 +2,14 @@
<div class="notifications" if={ notifications.length != 0 }>
<virtual each={ notification, i in notifications }>
<mk-notification notification={ notification }/>
<p class="date" if={ i != notifications.length - 1 && notification._date != notifications[i + 1]._date }><span><i class="fa fa-angle-up"></i>{ notification._datetext }</span><span><i class="fa fa-angle-down"></i>{ notifications[i + 1]._datetext }</span></p>
<p class="date" if={ i != notifications.length - 1 && notification._date != notifications[i + 1]._date }><span>%fa:angle-up%{ notification._datetext }</span><span>%fa:angle-down%{ notifications[i + 1]._datetext }</span></p>
</virtual>
</div>
<button class="more" if={ moreNotifications } onclick={ fetchMoreNotifications } disabled={ fetchingMoreNotifications }>
<i class="fa fa-spinner fa-pulse fa-fw" if={ fetchingMoreNotifications }></i>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:mobile.tags.mk-notifications.more%' }
<virtual if={ fetchingMoreNotifications }>%fa:spinner .pluse .fw%</virtual>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:mobile.tags.mk-notifications.more%' }
</button>
<p class="empty" if={ notifications.length == 0 && !loading }>%i18n:mobile.tags.mk-notifications.empty%</p>
<p class="loading" if={ loading }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:common.loading%<mk-ellipsis/></p>
<p class="loading" if={ loading }>%fa:spinner .pluse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style>
:scope
display block
@ -58,7 +58,7 @@
color #555
border-top solid 1px rgba(0, 0, 0, 0.05)
> i
> [data-fa]
margin-right 4px
> .empty
@ -73,7 +73,7 @@
text-align center
color #aaa
> i
> [data-fa]
margin-right 4px
</style>

View file

@ -12,11 +12,11 @@
this.on('mount', () => {
document.title = 'Misskey Drive';
ui.trigger('title', '<i class="fa fa-cloud"></i>%i18n:mobile.tags.mk-drive-page.drive%');
ui.trigger('title', '%fa:cloud%%i18n:mobile.tags.mk-drive-page.drive%');
ui.trigger('func', () => {
this.refs.ui.refs.browser.openContextMenu();
}, 'ellipsis-h');
}, '%fa:ellipsis-h%');
this.refs.ui.refs.browser.on('begin-fetch', () => {
Progress.start();
@ -37,7 +37,7 @@
history.pushState(null, title, '/i/drive');
document.title = title;
ui.trigger('title', '<i class="fa fa-cloud"></i>%i18n:mobile.tags.mk-drive-page.drive%');
ui.trigger('title', '%fa:cloud%%i18n:mobile.tags.mk-drive-page.drive%');
});
this.refs.ui.refs.browser.on('open-folder', (folder, silent) => {
@ -50,7 +50,7 @@
document.title = title;
// TODO: escape html characters in folder.name
ui.trigger('title', '<i class="fa fa-folder-open"></i>' + folder.name);
ui.trigger('title', '%fa:folder-open%' + folder.name);
});
this.refs.ui.refs.browser.on('open-file', (file, silent) => {

View file

@ -1,6 +1,6 @@
<mk-entrance-signup>
<mk-signup/>
<button class="cancel" type="button" onclick={ parent.signin } title="%i18n:mobile.tags.mk-entrance-signup.cancel%"><i class="fa fa-times"></i></button>
<button class="cancel" type="button" onclick={ parent.signin } title="%i18n:mobile.tags.mk-entrance-signup.cancel%">%fa:times%</button>
<style>
:scope
display block
@ -31,7 +31,7 @@
&:active
color #222
> i
> [data-fa]
padding 14px
</style>

View file

@ -22,12 +22,12 @@
this.on('mount', () => {
document.title = 'Misskey'
ui.trigger('title', '<i class="fa fa-home"></i>%i18n:mobile.tags.mk-home.home%');
ui.trigger('title', '%fa:home%%i18n:mobile.tags.mk-home.home%');
document.documentElement.style.background = '#313a42';
ui.trigger('func', () => {
openPostForm();
}, 'pencil');
}, '%fa:pencil-alt%');
Progress.start();

View file

@ -24,7 +24,7 @@
document.title = `%i18n:mobile.tags.mk-messaging-room-page.message%: ${user.name} | Misskey`;
// TODO: ユーザー名をエスケープ
ui.trigger('title', '<i class="fa fa-comments-o"></i>' + user.name);
ui.trigger('title', '%fa:R comments%' + user.name);
});
});
</script>

View file

@ -13,7 +13,7 @@
this.on('mount', () => {
document.title = 'Misskey | %i18n:mobile.tags.mk-messaging-page.message%';
ui.trigger('title', '<i class="fa fa-comments-o"></i>%i18n:mobile.tags.mk-messaging-page.message%');
ui.trigger('title', '%fa:R comments%%i18n:mobile.tags.mk-messaging-page.message%');
this.refs.ui.refs.index.on('navigate-user', user => {
this.page('/i/messaging/' + user.username);

View file

@ -14,12 +14,12 @@
this.on('mount', () => {
document.title = 'Misskey | %i18n:mobile.tags.mk-notifications-page.notifications%';
ui.trigger('title', '<i class="fa fa-bell-o"></i>%i18n:mobile.tags.mk-notifications-page.notifications%');
ui.trigger('title', '%fa:R bell%%i18n:mobile.tags.mk-notifications-page.notifications%');
document.documentElement.style.background = '#313a42';
ui.trigger('func', () => {
this.readAll();
}, 'check');
}, '%fa:check%');
Progress.start();

View file

@ -1,11 +1,11 @@
<mk-post-page>
<mk-ui ref="ui">
<main if={ !parent.fetching }>
<a if={ parent.post.next } href={ parent.post.next }><i class="fa fa-angle-up"></i>%i18n:mobile.tags.mk-post-page.next%</a>
<a if={ parent.post.next } href={ parent.post.next }>%fa:angle-up%%i18n:mobile.tags.mk-post-page.next%</a>
<div>
<mk-post-detail ref="post" post={ parent.post }/>
</div>
<a if={ parent.post.prev } href={ parent.post.prev }><i class="fa fa-angle-down"></i>%i18n:mobile.tags.mk-post-page.prev%</a>
<a if={ parent.post.prev } href={ parent.post.prev }>%fa:angle-down%%i18n:mobile.tags.mk-post-page.prev%</a>
</main>
</mk-ui>
<style>
@ -40,8 +40,9 @@
@media (min-width 500px)
margin-bottom 16px
> i
> [data-fa]
margin-right 4px
</style>
<script>
import ui from '../../scripts/ui-event';
@ -54,7 +55,7 @@
this.on('mount', () => {
document.title = 'Misskey';
ui.trigger('title', '<i class="fa fa-sticky-note-o"></i>%i18n:mobile.tags.mk-post-page.title%');
ui.trigger('title', '%fa:sticky-note-o%%i18n:mobile.tags.mk-post-page.title%');
document.documentElement.style.background = '#313a42';
Progress.start();

View file

@ -13,7 +13,7 @@
this.on('mount', () => {
document.title = `%i18n:mobile.tags.mk-search-page.search%: ${this.opts.query} | Misskey`
// TODO: クエリをHTMLエスケープ
ui.trigger('title', '<i class="fa fa-search"></i>' + this.opts.query);
ui.trigger('title', '%fa:search%' + this.opts.query);
document.documentElement.style.background = '#313a42';
Progress.start();

View file

@ -1,8 +1,8 @@
<mk-selectdrive-page>
<header>
<h1>%i18n:mobile.tags.mk-selectdrive-page.select-file%<span class="count" if={ files.length > 0 }>({ files.length })</span></h1>
<button class="upload" onclick={ upload }><i class="fa fa-upload"></i></button>
<button if={ multiple } class="ok" onclick={ ok }><i class="fa fa-check"></i></button>
<button class="upload" onclick={ upload }>%fa:upload%</button>
<button if={ multiple } class="ok" onclick={ ok }>%fa:check%</button>
</header>
<mk-drive ref="browser" select-file={ true } multiple={ multiple } is-naked={ true } top={ 42 }/>

View file

@ -11,7 +11,7 @@
this.on('mount', () => {
document.title = 'Misskey | %i18n:mobile.tags.mk-settings-page.settings%';
ui.trigger('title', '<i class="fa fa-cog"></i>%i18n:mobile.tags.mk-settings-page.settings%');
ui.trigger('title', '%fa:cog%%i18n:mobile.tags.mk-settings-page.settings%');
document.documentElement.style.background = '#313a42';
});
</script>

View file

@ -11,7 +11,7 @@
this.on('mount', () => {
document.title = 'Misskey | API';
ui.trigger('title', '<i class="fa fa-key"></i>API');
ui.trigger('title', '%fa:key%API');
});
</script>
</mk-api-info-page>

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