diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-09-08 15:11:12 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-09-08 15:11:12 +0900 |
| commit | 380cf0de6912000bf5fb18876dc910ce8b9a0e63 (patch) | |
| tree | ba4f3e111d2dafb1ad3e5e9315f0ea607819cac6 | |
| parent | 8.31.0 (diff) | |
| download | misskey-380cf0de6912000bf5fb18876dc910ce8b9a0e63.tar.gz misskey-380cf0de6912000bf5fb18876dc910ce8b9a0e63.tar.bz2 misskey-380cf0de6912000bf5fb18876dc910ce8b9a0e63.zip | |
Improve welcome page
| -rw-r--r-- | assets/about/drive.png | bin | 0 -> 112977 bytes | |||
| -rw-r--r-- | assets/about/post.png | bin | 0 -> 352793 bytes | |||
| -rw-r--r-- | assets/about/reaction.png | bin | 0 -> 24621 bytes | |||
| -rw-r--r-- | assets/about/ui.png | bin | 0 -> 128212 bytes | |||
| -rw-r--r-- | locales/ja-JP.yml | 13 | ||||
| -rw-r--r-- | src/client/app/desktop/views/pages/welcome.vue | 428 |
6 files changed, 275 insertions, 166 deletions
diff --git a/assets/about/drive.png b/assets/about/drive.png Binary files differnew file mode 100644 index 0000000000..c35de433a8 --- /dev/null +++ b/assets/about/drive.png diff --git a/assets/about/post.png b/assets/about/post.png Binary files differnew file mode 100644 index 0000000000..ba291ec665 --- /dev/null +++ b/assets/about/post.png diff --git a/assets/about/reaction.png b/assets/about/reaction.png Binary files differnew file mode 100644 index 0000000000..e4e7e06bc0 --- /dev/null +++ b/assets/about/reaction.png diff --git a/assets/about/ui.png b/assets/about/ui.png Binary files differnew file mode 100644 index 0000000000..ad102a31af --- /dev/null +++ b/assets/about/ui.png diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 07d8e7f48c..9404cd6ba6 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -6,6 +6,19 @@ common: misskey: "A ⭐ of fediverse" about-title: "A ⭐ of fediverse." about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" + intro: + title: "Misskeyって?" + about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。" + features: "特徴" + rich-contents: "投稿" + rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" + reaction: "リアクション" + reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" + ui: "インターフェース" + ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" + drive: "ドライブ" + drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" + outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!" adblock: detected: "広告ブロッカーを無効にしてください" warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。" diff --git a/src/client/app/desktop/views/pages/welcome.vue b/src/client/app/desktop/views/pages/welcome.vue index 549d9175f3..441ce890d0 100644 --- a/src/client/app/desktop/views/pages/welcome.vue +++ b/src/client/app/desktop/views/pages/welcome.vue @@ -7,86 +7,128 @@ <mk-forkit class="forkit"/> - <div class="body"> - <div class="main block"> - <div> - <h1 v-if="name != 'Misskey'">{{ name }}</h1> - <h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" :alt="name"></h1> - - <div class="info"> - <span><b>{{ host }}</b> - <span v-html="'%i18n:@powered-by-misskey%'"></span></span> - <span class="stats" v-if="stats"> - <span>%fa:user% {{ stats.originalUsersCount | number }}</span> - <span>%fa:pencil-alt% {{ stats.originalNotesCount | number }}</span> - </span> - </div> + <main> + <div class="body"> + <div class="main block"> + <div> + <h1 v-if="name != 'Misskey'">{{ name }}</h1> + <h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" :alt="name"></h1> - <p class="desc" v-html="description || '%i18n:common.about%'"></p> + <div class="info"> + <span><b>{{ host }}</b> - <span v-html="'%i18n:@powered-by-misskey%'"></span></span> + <span class="stats" v-if="stats"> + <span>%fa:user% {{ stats.originalUsersCount | number }}</span> + <span>%fa:pencil-alt% {{ stats.originalNotesCount | number }}</span> + </span> + </div> - <p class="sign"> - <span class="signup" @click="signup">%i18n:@signup%</span> - <span class="divider">|</span> - <span class="signin" @click="signin">%i18n:@signin%</span> - </p> + <p class="desc" v-html="description || '%i18n:common.about%'"></p> + <a class="about" @click="about">%i18n:@about%</a> - <img src="/assets/pointer.png" alt="" class="char"> - </div> - </div> + <p class="sign"> + <span class="signup" @click="signup">%i18n:@signup%</span> + <span class="divider">|</span> + <span class="signin" @click="signin">%i18n:@signin%</span> + </p> - <div class="announcements block"> - <header>%fa:broadcast-tower% %i18n:@announcements%</header> - <div v-if="announcements && announcements.length > 0"> - <div v-for="announcement in announcements"> - <h1 v-html="announcement.title"></h1> - <div v-html="announcement.text"></div> + <img src="/assets/pointer.png" alt="" class="char"> </div> </div> - </div> - <div class="photos block"> - <header>%fa:images% %i18n:@photos%</header> - <div> - <div v-for="photo in photos" :style="`background-image: url(${photo.thumbnailUrl})`"></div> - </div> - </div> - - <div class="tag-cloud block"> - <div> - <mk-tag-cloud/> + <div class="announcements block"> + <header>%fa:broadcast-tower% %i18n:@announcements%</header> + <div v-if="announcements && announcements.length > 0"> + <div v-for="announcement in announcements"> + <h1 v-html="announcement.title"></h1> + <div v-html="announcement.text"></div> + </div> + </div> </div> - </div> - <div class="nav block"> - <div> - <mk-nav class="nav"/> + <div class="photos block"> + <header>%fa:images% %i18n:@photos%</header> + <div> + <div v-for="photo in photos" :style="`background-image: url(${photo.thumbnailUrl})`"></div> + </div> </div> - </div> - <div class="side"> - <div class="trends block"> + <div class="tag-cloud block"> <div> - <mk-trends/> + <mk-tag-cloud/> </div> </div> - <div class="tl block"> - <header>%fa:comment-alt R% %i18n:@timeline%</header> + <div class="nav block"> <div> - <mk-welcome-timeline class="tl" :max="20"/> + <mk-nav class="nav"/> </div> </div> - <div class="info block"> - <header>%fa:info-circle% %i18n:@info%</header> - <div> - <div v-if="meta" class="body"> - <p>Version: <b>{{ meta.version }}</b></p> - <p>Maintainer: <b><a :href="meta.maintainer.url" target="_blank">{{ meta.maintainer.name }}</a></b></p> + <div class="side"> + <div class="trends block"> + <div> + <mk-trends/> + </div> + </div> + + <div class="tl block"> + <header>%fa:comment-alt R% %i18n:@timeline%</header> + <div> + <mk-welcome-timeline class="tl" :max="20"/> + </div> + </div> + + <div class="info block"> + <header>%fa:info-circle% %i18n:@info%</header> + <div> + <div v-if="meta" class="body"> + <p>Version: <b>{{ meta.version }}</b></p> + <p>Maintainer: <b><a :href="meta.maintainer.url" target="_blank">{{ meta.maintainer.name }}</a></b></p> + </div> </div> </div> </div> </div> - </div> + </main> + + <modal name="about" :class="$store.state.device.darkmode ? ['about', 'modal-dark'] : ['about', 'modal-light']" width="800px" height="auto" scrollable> + <article class="fpdezooorhntlzyeszemrsqdlgbysvxq"> + <h1>%i18n:common.intro.title%</h1> + <p v-html="'%i18n:common.intro.about%'"></p> + <section> + <h2>%i18n:common.intro.features%</h2> + <section> + <div class="body"> + <h3>%i18n:common.intro.rich-contents%</h3> + <p v-html="'%i18n:common.intro.rich-contents-desc%'"></p> + </div> + <div class="image"><img src="/assets/about/post.png" alt=""></div> + </section> + <section> + <div class="body"> + <h3>%i18n:common.intro.reaction%</h3> + <p v-html="'%i18n:common.intro.reaction-desc%'"></p> + </div> + <div class="image"><img src="/assets/about/reaction.png" alt=""></div> + </section> + <section> + <div class="body"> + <h3>%i18n:common.intro.ui%</h3> + <p v-html="'%i18n:common.intro.ui-desc%'"></p> + </div> + <div class="image"><img src="/assets/about/ui.png" alt=""></div> + </section> + <section> + <div class="body"> + <h3>%i18n:common.intro.drive%</h3> + <p v-html="'%i18n:common.intro.drive-desc%'"></p> + </div> + <div class="image"><img src="/assets/about/drive.png" alt=""></div> + </section> + </section> + <p v-html="'%i18n:common.intro.outro%'"></p> + </article> + </modal> <modal name="signup" :class="$store.state.device.darkmode ? 'modal-dark' : 'modal-light'" width="450px" height="auto" scrollable> <header class="formHeader">%i18n:@signup%</header> @@ -147,6 +189,10 @@ export default Vue.extend({ }, methods: { + about() { + this.$modal.show('about'); + }, + signup() { this.$modal.show('signup'); }, @@ -199,6 +245,54 @@ export default Vue.extend({ margin 0 48px font-size 1.5em +.v--modal-overlay.about + .v--modal-box.v--modal + margin 32px 0 + +.fpdezooorhntlzyeszemrsqdlgbysvxq + padding 64px + + > p:last-child + margin-bottom 0 + + > h1 + margin-top 0 + + > section + > h2 + border-bottom 1px solid isDark ? rgba(#000, 0.2) : rgba(#000, 0.05) + + > section + display grid + grid-template-rows 1fr + grid-template-columns 180px 1fr + gap 32px + margin-bottom 32px + padding-bottom 32px + border-bottom 1px solid isDark ? rgba(#000, 0.2) : rgba(#000, 0.05) + + &:nth-child(odd) + grid-template-columns 1fr 180px + + > .body + grid-column 1 + + > .image + grid-column 2 + + > .body + grid-row 1 + grid-column 2 + + > .image + grid-row 1 + grid-column 1 + + > img + display block + width 100% + height 100% + object-fit cover </style> <style lang="stylus" scoped> @@ -226,16 +320,11 @@ root(isDark) font-size 18px color isDark ? #fff : #444 - > .body - display grid - grid-template-rows 1fr 1fr 256px 64px - grid-template-columns 1fr 1fr 350px - gap 16px - width 100% - max-width 1200px - height 1200px + > main margin 0 auto padding 64px + width 100% + max-width 1200px .block color isDark ? #fff : #444 @@ -259,137 +348,144 @@ root(isDark) > div overflow auto - > .main - grid-row 1 - grid-column 1 / 3 - border-top solid 5px $theme-color + > .body + display grid + grid-template-rows 1fr 1fr 256px 64px + grid-template-columns 1fr 1fr 350px + gap 16px + height 1200px - > div - padding 32px - min-height 100% + > .main + grid-row 1 + grid-column 1 / 3 + border-top solid 5px $theme-color - > h1 - margin 0 + > div + padding 32px + min-height 100% - > img - margin -8px 0 0 -16px - max-width 280px + > h1 + margin 0 - > .info - margin 0 auto 16px auto - width $width - font-size 14px + > img + margin -8px 0 0 -16px + max-width 280px - > .stats - margin-left 16px - padding-left 16px - border-left solid 1px isDark ? #fff : #444 + > .info + margin 0 auto 16px auto + width $width + font-size 14px - > * - margin-right 16px + > .stats + margin-left 16px + padding-left 16px + border-left solid 1px isDark ? #fff : #444 - > .sign - font-size 120% + > * + margin-right 16px - > .divider - margin 0 16px + > .sign + font-size 120% - > .signin - > .signup - cursor pointer + > .divider + margin 0 16px - &:hover - color $theme-color + > .signin + > .signup + cursor pointer - > .char - display block - position absolute - right 16px - bottom 16px - width 180px - opacity 0.3 + &:hover + color $theme-color - > *:not(.char) - z-index 1 + > .char + display block + position absolute + right 16px + bottom 16px + width 180px + opacity 0.3 - > .announcements - grid-row 2 - grid-column 1 + > *:not(.char) + z-index 1 - > div - padding 32px + > .announcements + grid-row 2 + grid-column 1 > div - padding 0 0 16px 0 - margin 0 0 16px 0 - border-bottom 1px solid isDark ? rgba(#000, 0.2) : rgba(#000, 0.05) + padding 32px - > h1 - margin 0 - font-size 1.25em + > div + padding 0 0 16px 0 + margin 0 0 16px 0 + border-bottom 1px solid isDark ? rgba(#000, 0.2) : rgba(#000, 0.05) - > .photos - grid-row 2 - grid-column 2 + > h1 + margin 0 + font-size 1.25em - > div - display grid - grid-template-rows 1fr 1fr 1fr - grid-template-columns 1fr 1fr - gap 8px - height 100% - padding 16px + > .photos + grid-row 2 + grid-column 2 > div - //border-radius 4px - background-position center center - background-size cover + display grid + grid-template-rows 1fr 1fr 1fr + grid-template-columns 1fr 1fr + gap 8px + height 100% + padding 16px - > .tag-cloud - grid-row 3 - grid-column 1 / 3 + > div + //border-radius 4px + background-position center center + background-size cover - > div - height 256px - padding 32px + > .tag-cloud + grid-row 3 + grid-column 1 / 3 - > .nav - display flex - justify-content center - align-items center - grid-row 4 - grid-column 1 / 3 - font-size 14px + > div + height 256px + padding 32px - > .side - display grid - grid-row 1 / 5 - grid-column 3 - grid-template-rows 1fr 350px - grid-template-columns 1fr - gap 16px + > .nav + display flex + justify-content center + align-items center + grid-row 4 + grid-column 1 / 3 + font-size 14px - > .tl - grid-row 1 - grid-column 1 - overflow auto + > .side + display grid + grid-row 1 / 5 + grid-column 3 + grid-template-rows 1fr 350px + grid-template-columns 1fr + gap 16px - > .trends - grid-row 2 - grid-column 1 - padding 8px + > .tl + grid-row 1 + grid-column 1 + overflow auto - > .info - grid-row 3 - grid-column 1 + > .trends + grid-row 2 + grid-column 1 + padding 8px - > div - padding 16px + > .info + grid-row 3 + grid-column 1 - > .body - > p - display block - margin 0 + > div + padding 16px + + > .body + > p + display block + margin 0 .mk-welcome[data-darkmode] root(true) |