diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index db2a15522..46dea949d 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -285,6 +285,28 @@ common/views/components/media-banner.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" +common/views/components/theme.vue: + light-theme: "非ダークモード時に使用するテーマ" + dark-theme: "ダークモード時に使用するテーマ" + install-a-theme: "テーマのインストール" + theme-code: "テーマコード" + install: "インストール" + create-a-theme: "テーマの作成" + save-created-theme: "テーマを保存" + primary-color: "プライマリ カラー" + secondary-color: "セカンダリ カラー" + text-color: "文字色" + base-theme: "ベーステーマ" + base-theme-light: "Light" + base-theme-dark: "Dark" + theme-name: "テーマ名" + preview-created-theme: "プレビュー" + invalid-theme: "テーマが正しくありません。" + already-installed: "既にそのテーマはインストールされています。" + saved: "保存しました" + installed-themes: "インストールされたテーマ" + select-theme: "テーマを選択してください" + common/views/components/cw-button.vue: hide: "隠す" show: "もっと見る" @@ -762,6 +784,7 @@ desktop/views/components/settings.vue: 2fa: "二段階認証" other: "その他" license: "ライセンス" + theme: "テーマ" behaviour: "動作" fetch-on-scroll: "スクロールで自動読み込み" @@ -784,7 +807,6 @@ desktop/views/components/settings.vue: rounded-corners: "UIの角を丸める" circle-icons: "円形のアイコンを使用" contrasted-acct: "ユーザー名にコントラストを付ける" - gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" show-clock-on-header: "右上に時計を表示する" @@ -793,7 +815,6 @@ desktop/views/components/settings.vue: show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-maps: "マップの自動展開" - show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。" sound: "サウンド" enable-sounds: "サウンドを有効にする" @@ -1419,6 +1440,7 @@ mobile/views/pages/settings.vue: notification-position: "通知の表示" notification-position-bottom: "下" notification-position-top: "上" + theme: "テーマ" behavior: "動作" fetch-on-scroll: "スクロールで自動読み込み" note-visibility: "投稿の公開範囲" diff --git a/package.json b/package.json index 1b786d1a3..e19283cf6 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "@types/single-line-log": "1.1.0", "@types/speakeasy": "2.0.2", "@types/systeminformation": "3.23.0", + "@types/tinycolor2": "1.4.1", "@types/tmp": "0.0.33", "@types/uuid": "3.4.4", "@types/webpack": "4.4.12", @@ -194,6 +195,7 @@ "systeminformation": "3.45.6", "syuilo-password-strength": "0.0.1", "textarea-caret": "3.1.0", + "tinycolor2": "1.4.1", "tmp": "0.0.33", "ts-loader": "4.4.1", "ts-node": "7.0.1", @@ -206,12 +208,14 @@ "v-animate-css": "0.0.2", "vue": "2.5.17", "vue-chartjs": "3.4.0", + "vue-color": "2.6.0", "vue-cropperjs": "2.2.2", "vue-js-modal": "1.3.26", "vue-json-tree-view": "2.1.4", "vue-loader": "15.4.2", "vue-router": "3.0.1", "vue-style-loader": "4.1.2", + "vue-svg-inline-loader": "1.1.3", "vue-template-compiler": "2.5.17", "vuedraggable": "2.16.0", "vuewordcloud": "18.7.11", diff --git a/src/client/app/app.styl b/src/client/app/app.styl index 3911f83a6..2f0095944 100644 --- a/src/client/app/app.styl +++ b/src/client/app/app.styl @@ -27,7 +27,7 @@ body z-index 65536 .bar - background $theme-color + background var(--primary) position fixed z-index 65537 @@ -44,7 +44,7 @@ body right 0px width 100px height 100% - box-shadow 0 0 10px $theme-color, 0 0 5px $theme-color + box-shadow 0 0 10px var(--primary), 0 0 5px var(--primary) opacity 1 transform rotate(3deg) translate(0px, -4px) @@ -64,8 +64,8 @@ body box-sizing border-box border solid 2px transparent - border-top-color $theme-color - border-left-color $theme-color + border-top-color var(--primary) + border-left-color var(--primary) border-radius 50% animation progress-spinner 400ms linear infinite diff --git a/src/client/app/app.vue b/src/client/app/app.vue index e639c9f9a..778e9f29c 100644 --- a/src/client/app/app.vue +++ b/src/client/app/app.vue @@ -5,6 +5,9 @@ diff --git a/src/client/app/common/views/components/avatar.vue b/src/client/app/common/views/components/avatar.vue index a2b0fc6bd..ac018abcf 100644 --- a/src/client/app/common/views/components/avatar.vue +++ b/src/client/app/common/views/components/avatar.vue @@ -58,6 +58,11 @@ export default Vue.extend({ }; } }, + mounted() { + if (this.user.avatarColor) { + this.$el.style.color = `rgb(${this.user.avatarColor.slice(0, 3).join(',')})`; + } + }, methods: { onClick(e) { this.$emit('click', e); @@ -67,8 +72,7 @@ export default Vue.extend({ diff --git a/src/client/app/common/views/components/connect-failed.vue b/src/client/app/common/views/components/connect-failed.vue index 0f686926b..36cae0566 100644 --- a/src/client/app/common/views/components/connect-failed.vue +++ b/src/client/app/common/views/components/connect-failed.vue @@ -39,7 +39,7 @@ export default Vue.extend({ diff --git a/src/client/app/common/views/components/forkit.vue b/src/client/app/common/views/components/forkit.vue index de627181e..b303b48b7 100644 --- a/src/client/app/common/views/components/forkit.vue +++ b/src/client/app/common/views/components/forkit.vue @@ -9,7 +9,7 @@ diff --git a/src/client/app/common/views/components/games/reversi/reversi.index.vue b/src/client/app/common/views/components/games/reversi/reversi.index.vue index d23902aae..3725aa6cb 100644 --- a/src/client/app/common/views/components/games/reversi/reversi.index.vue +++ b/src/client/app/common/views/components/games/reversi/reversi.index.vue @@ -138,9 +138,7 @@ export default Vue.extend({ diff --git a/src/client/app/common/views/components/games/reversi/reversi.room.vue b/src/client/app/common/views/components/games/reversi/reversi.room.vue index fef833d63..9f0d9c23f 100644 --- a/src/client/app/common/views/components/games/reversi/reversi.room.vue +++ b/src/client/app/common/views/components/games/reversi/reversi.room.vue @@ -47,9 +47,9 @@
-