summaryrefslogtreecommitdiff
path: root/src/client/app/mobile
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-06-15 07:58:58 +0900
committerGitHub <noreply@github.com>2018-06-15 07:58:58 +0900
commit39b1978ff358986281f4abc28e31a1ded91fe990 (patch)
tree4ea8a507adb275b6a29890fe8502c8e0ce6759e2 /src/client/app/mobile
parent2.38.3 (diff)
parentwip (diff)
downloadmisskey-39b1978ff358986281f4abc28e31a1ded91fe990.tar.gz
misskey-39b1978ff358986281f4abc28e31a1ded91fe990.tar.bz2
misskey-39b1978ff358986281f4abc28e31a1ded91fe990.zip
Merge pull request #1713 from syuilo/without-vue-material
Without vue material
Diffstat (limited to 'src/client/app/mobile')
-rw-r--r--src/client/app/mobile/script.ts17
-rw-r--r--src/client/app/mobile/style.styl3
-rw-r--r--src/client/app/mobile/views/pages/settings.vue192
-rw-r--r--src/client/app/mobile/views/pages/settings/settings.profile.vue100
-rw-r--r--src/client/app/mobile/views/pages/signup.vue43
-rw-r--r--src/client/app/mobile/views/pages/welcome.vue183
-rw-r--r--src/client/app/mobile/views/widgets/profile.vue2
7 files changed, 199 insertions, 341 deletions
diff --git a/src/client/app/mobile/script.ts b/src/client/app/mobile/script.ts
index d505b38dcc..8ee078d621 100644
--- a/src/client/app/mobile/script.ts
+++ b/src/client/app/mobile/script.ts
@@ -2,17 +2,11 @@
* Mobile Client
*/
-import Vue from 'vue';
import VueRouter from 'vue-router';
-import { MdCard, MdButton, MdField, MdMenu, MdList, MdSwitch, MdSubheader, MdDialog, MdDialogAlert, MdRadio } from 'vue-material/dist/components';
-import 'vue-material/dist/vue-material.min.css';
-import 'vue-material/dist/theme/default.css';
-
// Style
import './style.styl';
import '../../element.scss';
-import '../../md.scss';
import init from '../init';
@@ -44,17 +38,6 @@ import MkSettings from './views/pages/settings.vue';
import MkOthello from './views/pages/othello.vue';
import MkTag from './views/pages/tag.vue';
-Vue.use(MdCard);
-Vue.use(MdButton);
-Vue.use(MdField);
-Vue.use(MdMenu);
-Vue.use(MdList);
-Vue.use(MdSwitch);
-Vue.use(MdSubheader);
-Vue.use(MdDialog);
-Vue.use(MdDialogAlert);
-Vue.use(MdRadio);
-
/**
* init
*/
diff --git a/src/client/app/mobile/style.styl b/src/client/app/mobile/style.styl
index d1ab044eaf..df8f4a8fae 100644
--- a/src/client/app/mobile/style.styl
+++ b/src/client/app/mobile/style.styl
@@ -10,9 +10,6 @@ html
height 100%
background #ececed !important
- // for md
- transition none !important
-
&[data-darkmode]
background #191B22 !important
diff --git a/src/client/app/mobile/views/pages/settings.vue b/src/client/app/mobile/views/pages/settings.vue
index 8da7a76633..1c5a43ede4 100644
--- a/src/client/app/mobile/views/pages/settings.vue
+++ b/src/client/app/mobile/views/pages/settings.vue
@@ -1,132 +1,84 @@
<template>
<mk-ui>
<span slot="header">%fa:cog%%i18n:@settings%</span>
- <main>
- <p v-html="'%i18n:@signed-in-as%'.replace('{}', '<b>' + name + '</b>')"></p>
+ <main :data-darkmode="$store.state.device.darkmode">
+ <div class="signin-as" v-html="'%i18n:@signed-in-as%'.replace('{}', '<b>' + name + '</b>')"></div>
+
<div>
<x-profile/>
- <md-card>
- <md-card-header>
- <div class="md-title">%fa:palette% %i18n:@design%</div>
- </md-card-header>
-
- <md-card-content>
- <div>
- <md-switch v-model="darkmode">%i18n:@dark-mode%</md-switch>
- </div>
-
- <div>
- <md-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons">%i18n:@circle-icons%</md-switch>
- </div>
-
- <div>
- <div class="md-body-2">%i18n:@timeline%</div>
-
- <div>
- <md-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget">%i18n:@show-reply-target%</md-switch>
- </div>
-
- <div>
- <md-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes">%i18n:@show-my-renotes%</md-switch>
- </div>
-
- <div>
- <md-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes">%i18n:@show-renoted-my-notes%</md-switch>
- </div>
- </div>
+ <ui-card>
+ <div slot="title">%fa:palette% %i18n:@design%</div>
- <div>
- <div class="md-body-2">%i18n:@post-style%</div>
+ <ui-switch v-model="darkmode">%i18n:@dark-mode%</ui-switch>
+ <ui-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons">%i18n:@circle-icons%</ui-switch>
- <md-radio v-model="postStyle" value="standard">%i18n:@post-style-standard%</md-radio>
- <md-radio v-model="postStyle" value="smart">%i18n:@post-style-smart%</md-radio>
- </div>
- </md-card-content>
- </md-card>
+ <div>
+ <div>%i18n:@timeline%</div>
+ <ui-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget">%i18n:@show-reply-target%</ui-switch>
+ <ui-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes">%i18n:@show-my-renotes%</ui-switch>
+ <ui-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes">%i18n:@show-renoted-my-notes%</ui-switch>
+ </div>
- <md-card>
- <md-card-header>
- <div class="md-title">%fa:cog% %i18n:@behavior%</div>
- </md-card-header>
+ <div>
+ <div>%i18n:@post-style%</div>
+ <ui-radio v-model="postStyle" value="standard">%i18n:@post-style-standard%</ui-radio>
+ <ui-radio v-model="postStyle" value="smart">%i18n:@post-style-smart%</ui-radio>
+ </div>
+ </ui-card>
- <md-card-content>
- <div>
- <md-switch v-model="$store.state.settings.fetchOnScroll" @change="onChangeFetchOnScroll">%i18n:@fetch-on-scroll%</md-switch>
- </div>
+ <ui-card>
+ <div slot="title">%fa:cog% %i18n:@behavior%</div>
+ <ui-switch v-model="$store.state.settings.fetchOnScroll" @change="onChangeFetchOnScroll">%i18n:@fetch-on-scroll%</ui-switch>
+ <ui-switch v-model="$store.state.settings.disableViaMobile" @change="onChangeDisableViaMobile">%i18n:@disable-via-mobile%</ui-switch>
+ <ui-switch v-model="loadRawImages">%i18n:@load-raw-images%</ui-switch>
+ <ui-switch v-model="$store.state.settings.loadRemoteMedia" @change="onChangeLoadRemoteMedia">%i18n:@load-remote-media%</ui-switch>
+ <ui-switch v-model="lightmode">%i18n:@i-am-under-limited-internet%</ui-switch>
+ </ui-card>
- <div>
- <md-switch v-model="$store.state.settings.disableViaMobile" @change="onChangeDisableViaMobile">%i18n:@disable-via-mobile%</md-switch>
- </div>
+ <ui-card>
+ <div slot="title">%fa:language% %i18n:@lang%</div>
- <div>
- <md-switch v-model="loadRawImages">%i18n:@load-raw-images%</md-switch>
- </div>
+ <ui-select v-model="lang" placeholder="%i18n:@auto%">
+ <optgroup label="%i18n:@recommended%">
+ <option value="">%i18n:@auto%</option>
+ </optgroup>
- <div>
- <md-switch v-model="$store.state.settings.loadRemoteMedia" @change="onChangeLoadRemoteMedia">%i18n:@load-remote-media%</md-switch>
- </div>
+ <optgroup label="%i18n:@specify-language%">
+ <option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option>
+ </optgroup>
+ </ui-select>
+ <span>%fa:info-circle% %i18n:@lang-tip%</span>
+ </ui-card>
- <div>
- <md-switch v-model="lightmode">%i18n:@i-am-under-limited-internet%</md-switch>
- </div>
- </md-card-content>
- </md-card>
+ <ui-card>
+ <div slot="title">%fa:B twitter% %i18n:@twitter%</div>
- <md-card>
- <md-card-header>
- <div class="md-title">%fa:language% %i18n:@lang%</div>
- </md-card-header>
+ <p class="account" v-if="$store.state.i.twitter"><a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
+ <p>
+ <a :href="`${apiUrl}/connect/twitter`" target="_blank">{{ $store.state.i.twitter ? '%i18n:@twitter-reconnect%' : '%i18n:@twitter-connect%' }}</a>
+ <span v-if="$store.state.i.twitter"> or </span>
+ <a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="$store.state.i.twitter">%i18n:@twitter-disconnect%</a>
+ </p>
+ </ui-card>
- <md-card-content>
- <md-field>
- <md-select v-model="lang" placeholder="%i18n:@auto%">
- <md-optgroup label="%i18n:@recommended%">
- <md-option value="">%i18n:@auto%</md-option>
- </md-optgroup>
+ <ui-card>
+ <div slot="title">%fa:sync-alt% %i18n:@update%</div>
- <md-optgroup label="%i18n:@specify-language%">
- <md-option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</md-option>
- </md-optgroup>
- </md-select>
- </md-field>
- <span class="md-helper-text">%fa:info-circle% %i18n:@lang-tip%</span>
- </md-card-content>
- </md-card>
-
- <md-card>
- <md-card-header>
- <div class="md-title">%fa:B twitter% %i18n:@twitter%</div>
- </md-card-header>
-
- <md-card-content>
- <p class="account" v-if="$store.state.i.twitter"><a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
- <p>
- <a :href="`${apiUrl}/connect/twitter`" target="_blank">{{ $store.state.i.twitter ? '%i18n:@twitter-reconnect%' : '%i18n:@twitter-connect%' }}</a>
- <span v-if="$store.state.i.twitter"> or </span>
- <a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="$store.state.i.twitter">%i18n:@twitter-disconnect%</a>
- </p>
- </md-card-content>
- </md-card>
-
- <md-card>
- <md-card-header>
- <div class="md-title">%fa:sync-alt% %i18n:@update%</div>
- </md-card-header>
-
- <md-card-content>
- <div>%i18n:@version% <i>{{ version }}</i></div>
- <template v-if="latestVersion !== undefined">
- <div>%i18n:@latest-version% <i>{{ latestVersion ? latestVersion : version }}</i></div>
- </template>
- <md-button class="md-raised md-primary" @click="checkForUpdate" :disabled="checkingForUpdate">
- <template v-if="checkingForUpdate">%i18n:@update-checking%<mk-ellipsis/></template>
- <template v-else>%i18n:@check-for-updates%</template>
- </md-button>
- </md-card-content>
- </md-card>
+ <div>%i18n:@version% <i>{{ version }}</i></div>
+ <template v-if="latestVersion !== undefined">
+ <div>%i18n:@latest-version% <i>{{ latestVersion ? latestVersion : version }}</i></div>
+ </template>
+ <ui-button @click="checkForUpdate" :disabled="checkingForUpdate">
+ <template v-if="checkingForUpdate">%i18n:@update-checking%<mk-ellipsis/></template>
+ <template v-else>%i18n:@check-for-updates%</template>
+ </ui-button>
+ </ui-card>
</div>
- <p><small>ver {{ version }} ({{ codename }})</small></p>
+
+ <footer>
+ <small>ver {{ version }} ({{ codename }})</small>
+ </footer>
</main>
</mk-ui>
</template>
@@ -267,20 +219,22 @@ export default Vue.extend({
<style lang="stylus" scoped>
root(isDark)
- padding 0 16px
margin 0 auto
max-width 500px
width 100%
- > div
- > *
- margin-bottom 16px
+ > .signin-as
+ margin 16px
+ padding 16px
+ text-align center
+ color isDark ? #49ab63 : #2c662d
+ background isDark ? #273c34 : #fcfff5
+ box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
- > p
- display block
- margin 24px
+ > footer
+ margin 16px
text-align center
- color isDark ? #cad2da : #a2a9b1
+ color isDark ? #c9d2e0 : #888
main[data-darkmode]
root(true)
diff --git a/src/client/app/mobile/views/pages/settings/settings.profile.vue b/src/client/app/mobile/views/pages/settings/settings.profile.vue
index f3444eb1f0..da97cbebd7 100644
--- a/src/client/app/mobile/views/pages/settings/settings.profile.vue
+++ b/src/client/app/mobile/views/pages/settings/settings.profile.vue
@@ -1,62 +1,49 @@
<template>
- <md-card>
- <md-card-header>
- <div class="md-title">%fa:pencil-alt% %i18n:@title%</div>
- </md-card-header>
+<ui-card>
+ <div slot="title">%fa:user% %i18n:@title%</div>
- <md-card-content>
- <md-field>
- <label>%i18n:@name%</label>
- <md-input v-model="name" :disabled="saving" md-counter="30"/>
- </md-field>
+ <ui-form :disabled="saving">
+ <ui-input v-model="name" :max="30">
+ <span>%i18n:@name%</span>
+ </ui-input>
- <md-field>
- <label>%i18n:@account%</label>
- <span class="md-prefix">@</span>
- <md-input v-model="username" readonly></md-input>
- <span class="md-suffix">@{{ host }}</span>
- </md-field>
+ <ui-input v-model="username" readonly>
+ <span>%i18n:@account%</span>
+ <span slot="prefix">@</span>
+ <span slot="suffix">@{{ host }}</span>
+ </ui-input>
- <md-field>
- <md-icon>%fa:map-marker-alt%</md-icon>
- <label>%i18n:@location%</label>
- <md-input v-model="location" :disabled="saving"/>
- </md-field>
+ <ui-input v-model="location">
+ <span>%i18n:@location%</span>
+ <span slot="prefix">%fa:map-marker-alt%</span>
+ </ui-input>
- <md-field>
- <md-icon>%fa:birthday-cake%</md-icon>
- <label>%i18n:@birthday%</label>
- <md-input type="date" v-model="birthday" :disabled="saving"/>
- </md-field>
+ <ui-input v-model="birthday" type="date">
+ <span>%i18n:@birthday%</span>
+ <span slot="prefix">%fa:birthday-cake%</span>
+ </ui-input>
- <md-field>
- <label>%i18n:@description%</label>
- <md-textarea v-model="description" :disabled="saving" md-counter="500"/>
- </md-field>
+ <ui-textarea v-model="description" :max="500">
+ <span>%i18n:@description%</span>
+ </ui-textarea>
- <md-field>
- <label>%i18n:@avatar%</label>
- <md-file @md-change="onAvatarChange"/>
- </md-field>
+ <ui-input type="file" @change="onAvatarChange">
+ <span>%i18n:@avatar%</span>
+ <span slot="icon">%fa:image%</span>
+ <span slot="text" v-if="avatarUploading">%i18n:@uploading%<mk-ellipsis/></span>
+ </ui-input>
- <md-field>
- <label>%i18n:@banner%</label>
- <md-file @md-change="onBannerChange"/>
- </md-field>
+ <ui-input type="file" @change="onBannerChange">
+ <span>%i18n:@banner%</span>
+ <span slot="icon">%fa:image%</span>
+ <span slot="text" v-if="bannerUploading">%i18n:@uploading%<mk-ellipsis/></span>
+ </ui-input>
- <md-dialog-alert
- :md-active.sync="uploading"
- md-content="%18n:!@uploading%"/>
+ <ui-switch v-model="isCat">%i18n:@is-cat%</ui-switch>
- <div>
- <md-switch v-model="isCat">%i18n:@is-cat%</md-switch>
- </div>
- </md-card-content>
-
- <md-card-actions>
- <md-button class="md-primary" :disabled="saving" @click="save">%i18n:@save%</md-button>
- </md-card-actions>
- </md-card>
+ <ui-button @click="save">%i18n:@save%</ui-button>
+ </ui-form>
+</ui-card>
</template>
<script lang="ts">
@@ -77,7 +64,8 @@ export default Vue.extend({
isBot: false,
isCat: false,
saving: false,
- uploading: false
+ avatarUploading: false,
+ bannerUploading: false
};
},
@@ -95,7 +83,7 @@ export default Vue.extend({
methods: {
onAvatarChange([file]) {
- this.uploading = true;
+ this.avatarUploading = true;
const data = new FormData();
data.append('file', file);
@@ -108,16 +96,16 @@ export default Vue.extend({
.then(response => response.json())
.then(f => {
this.avatarId = f.id;
- this.uploading = false;
+ this.avatarUploading = false;
})
.catch(e => {
- this.uploading = false;
+ this.avatarUploading = false;
alert('%18n:!@upload-failed%');
});
},
onBannerChange([file]) {
- this.uploading = true;
+ this.bannerUploading = true;
const data = new FormData();
data.append('file', file);
@@ -130,10 +118,10 @@ export default Vue.extend({
.then(response => response.json())
.then(f => {
this.bannerId = f.id;
- this.uploading = false;
+ this.bannerUploading = false;
})
.catch(e => {
- this.uploading = false;
+ this.bannerUploading = false;
alert('%18n:!@upload-failed%');
});
},
diff --git a/src/client/app/mobile/views/pages/signup.vue b/src/client/app/mobile/views/pages/signup.vue
index b8245beb00..47384e2b3c 100644
--- a/src/client/app/mobile/views/pages/signup.vue
+++ b/src/client/app/mobile/views/pages/signup.vue
@@ -1,57 +1,26 @@
<template>
<div class="signup">
<h1>Misskeyをはじめる</h1>
- <p>いつでも、どこからでもMisskeyを利用できます。もちろん、無料です。</p>
- <div class="form">
- <p>新規登録</p>
- <div>
- <mk-signup/>
- </div>
- </div>
+ <mk-signup/>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
-export default Vue.extend({
- mounted() {
- document.documentElement.style.background = '#293946';
- }
-});
+export default Vue.extend({});
</script>
<style lang="stylus" scoped>
.signup
- padding 16px
+ padding 32px
margin 0 auto
max-width 500px
h1
margin 0
- padding 8px
+ padding 8px 0 0 0
font-size 1.5em
- font-weight normal
- color #c3c6ca
-
- & + p
- margin 0 0 16px 0
- padding 0 8px 0 8px
- color #949fa9
-
- .form
- background #fff
- border solid 1px rgba(#000, 0.2)
- border-radius 8px
- overflow hidden
-
- > p
- margin 0
- padding 12px 20px
- color #555
- background #f5f5f5
- border-bottom solid 1px #ddd
-
- > div
- padding 16px
+ font-weight bold
+ color #444
</style>
diff --git a/src/client/app/mobile/views/pages/welcome.vue b/src/client/app/mobile/views/pages/welcome.vue
index 64cfa5a46c..3bf2a0af9f 100644
--- a/src/client/app/mobile/views/pages/welcome.vue
+++ b/src/client/app/mobile/views/pages/welcome.vue
@@ -1,29 +1,31 @@
<template>
<div class="welcome">
<div>
- <h1><b>Misskey</b>へようこそ</h1>
- <p>Twitter風ミニブログSNS、Misskeyへようこそ。共有したいことを投稿したり、タイムラインでみんなの投稿を読むこともできます。<br><a href="/signup">アカウントを作成する</a></p>
- <div class="form">
- <p>%fa:lock% ログイン</p>
+ <img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="Misskey">
+ <p class="host">{{ host }}</p>
+ <div class="about">
+ <h2>{{ name || 'unidentified' }}</h2>
+ <p v-html="description || '%i18n:common.about%'"></p>
+ <router-link class="signup" to="/signup">新規登録</router-link>
+ </div>
+ <div class="login">
+ <form @submit.prevent="onSubmit">
+ <ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" autofocus required @change="onUsernameChange">
+ <span>ユーザー名</span>
+ <span slot="prefix">@</span>
+ <span slot="suffix">@{{ host }}</span>
+ </ui-input>
+ <ui-input v-model="password" type="password" required>
+ <span>パスワード</span>
+ <span slot="prefix">%fa:lock%</span>
+ </ui-input>
+ <ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
+ <ui-button type="submit" :disabled="signing">{{ signing ? 'ログインしています' : 'ログイン' }}</ui-button>
+ </form>
<div>
- <form @submit.prevent="onSubmit">
- <input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" placeholder="ユーザー名" autofocus required @change="onUsernameChange"/>
- <input v-model="password" type="password" placeholder="パスワード" required/>
- <input v-if="user && user.twoFactorEnabled" v-model="token" type="number" placeholder="トークン" required/>
- <button type="submit" :disabled="signing">{{ signing ? 'ログインしています' : 'ログイン' }}</button>
- </form>
- <div>
- <a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a>
- </div>
+ <a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a>
</div>
</div>
- <div class="tl">
- <p>%fa:comments R% タイムラインを見てみる</p>
- <mk-welcome-timeline/>
- </div>
- <div class="users">
- <mk-avatar class="avatar" v-for="user in users" :key="user.id" :user="user"/>
- </div>
<footer>
<small>{{ copyright }}</small>
</footer>
@@ -33,7 +35,7 @@
<script lang="ts">
import Vue from 'vue';
-import { apiUrl, copyright } from '../../../config';
+import { apiUrl, copyright, host, name, description } from '../../../config';
export default Vue.extend({
data() {
@@ -45,7 +47,10 @@ export default Vue.extend({
token: '',
apiUrl,
copyright,
- users: []
+ users: [],
+ host,
+ name,
+ description
};
},
mounted() {
@@ -84,112 +89,74 @@ export default Vue.extend({
<style lang="stylus" scoped>
.welcome
- background linear-gradient(to bottom, #1e1d65, #bd6659)
+ text-align center
+ //background #fff
> div
- padding 16px
+ padding 32px
margin 0 auto
max-width 500px
- h1
- margin 0
- padding 8px
- font-size 1.5em
- font-weight normal
- color #cacac3
+ > img
+ display block
+ max-width 200px
+ margin 0 auto
- & + p
- margin 0 0 16px 0
- padding 0 8px 0 8px
- color #949fa9
+ > .host
+ display block
+ text-align center
+ padding 6px 12px
+ line-height 32px
+ font-weight bold
+ color #333
+ background rgba(#000, 0.035)
+ border-radius 6px
- .form
- margin-bottom 16px
+ > .about
+ margin-top 16px
+ padding 16px
+ color #555
background #fff
- border solid 1px rgba(#000, 0.2)
- border-radius 8px
- overflow hidden
+ border-radius 6px
- > p
+ > h2
margin 0
- padding 12px 20px
- color #555
- background #f5f5f5
- border-bottom solid 1px #ddd
-
- > div
- > form
- padding 16px
- border-bottom solid 1px #ddd
+ > p
+ margin 8px
- input
- display block
- padding 12px
- margin 0 0 16px 0
- width 100%
- font-size 1em
- color rgba(#000, 0.7)
- background #fff
- outline none
- border solid 1px #ddd
- border-radius 4px
+ > .signup
+ font-weight bold
- button
- display block
- width 100%
- padding 10px
- margin 0
- color #333
- font-size 1em
- text-align center
- text-decoration none
- text-shadow 0 1px 0 rgba(255, 255, 255, 0.9)
- background-image linear-gradient(#fafafa, #eaeaea)
- border 1px solid #ddd
- border-bottom-color #cecece
- border-radius 4px
+ > .login
+ margin 16px 0
- &:active
- background-color #767676
- background-image none
- border-color #444
- box-shadow 0 1px 3px rgba(#000, 0.075), inset 0 0 5px rgba(#000, 0.2)
+ > form
- > div
- padding 16px
+ button
+ display block
+ width 100%
+ padding 10px
+ margin 0
+ color #333
+ font-size 1em
text-align center
+ text-decoration none
+ text-shadow 0 1px 0 rgba(255, 255, 255, 0.9)
+ background-image linear-gradient(#fafafa, #eaeaea)
+ border 1px solid #ddd
+ border-bottom-color #cecece
+ border-radius 4px
- > .tl
- background #fff
- border solid 1px rgba(#000, 0.2)
- border-radius 8px
- overflow hidden
-
- > p
- margin 0
- padding 12px 20px
- color #555
- background #f5f5f5
- border-bottom solid 1px #ddd
-
- > .mk-welcome-timeline
- max-height 300px
- overflow auto
-
- > .users
- margin 12px 0 0 0
-
- > *
- display inline-block
- margin 4px
- width 38px
- height 38px
- border-radius 6px
+ &:active
+ background-color #767676
+ background-image none
+ border-color #444
+ box-shadow 0 1px 3px rgba(#000, 0.075), inset 0 0 5px rgba(#000, 0.2)
> footer
text-align center
- color #fff
+ color #444
> small
display block
diff --git a/src/client/app/mobile/views/widgets/profile.vue b/src/client/app/mobile/views/widgets/profile.vue
index beae1ffa36..a94f7e94b8 100644
--- a/src/client/app/mobile/views/widgets/profile.vue
+++ b/src/client/app/mobile/views/widgets/profile.vue
@@ -56,7 +56,7 @@ export default define({
left 92px
margin 0
line-height 100px
- color #fff !important // !important is for md
+ color #fff
font-weight bold
text-shadow 0 0 8px rgba(#000, 0.5)