Compare commits
	
		
			157 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 31de530497 | ||
|   | 16b6b1f2b3 | ||
|   | a2a25eb5f8 | ||
|   | 274cf1af1c | ||
|   | 7d11c8b767 | ||
|   | 7e50e03cfb | ||
|   | 89d5df20a5 | ||
|   | c09a2a37fe | ||
|   | b5745877ca | ||
|   | 6e04549a9b | ||
|   | 38139ee6c9 | ||
|   | 6b96bd0185 | ||
|   | f2b9863eea | ||
|   | f56adce51f | ||
|   | 35362ed3c7 | ||
|   | cd0b9a8e3f | ||
|   | 110aadd65c | ||
|   | ff76c815b1 | ||
|   | 1b9b8912ae | ||
|   | 579b61a806 | ||
|   | 1e2b484929 | ||
|   | 25dd19dd8c | ||
|   | b8b4991a46 | ||
|   | 8b68c5da37 | ||
|   | f26e641905 | ||
|   | 57669c9c03 | ||
|   | 094d873f2e | ||
|   | 7b42653271 | ||
|   | 6a82e94c54 | ||
|   | 1fa4d0d3f8 | ||
|   | d5818214f3 | ||
|   | 0c63ec8157 | ||
|   | 8317a219a5 | ||
|   | ec652dd0ac | ||
|   | 8e3dd75c85 | ||
|   | 3f4de3b1cc | ||
|   | e0d3fd17ce | ||
|   | 671c7cf06b | ||
|   | 99a2c5b3fa | ||
|   | 0343de95b8 | ||
|   | 13f258308e | ||
|   | c627288bde | ||
|   | 1eef90f6cb | ||
|   | 29476ea3da | ||
|   | 7609741680 | ||
|   | 5df85b5feb | ||
|   | b4a4d784c3 | ||
|   | d715af0620 | ||
|   | fe8c384618 | ||
|   | 47d4de75da | ||
|   | 016c7fd2c4 | ||
|   | 7ca5e33a3a | ||
|   | 436773837b | ||
|   | fccfe19e13 | ||
|   | 18be0d36f3 | ||
|   | 9ea7de3564 | ||
|   | d1dce76e28 | ||
|   | f4bf824e79 | ||
|   | cbf5d4b71d | ||
|   | 61e5cb2041 | ||
|   | 38a6aa26bc | ||
|   | 32942709bf | ||
|   | a0305c4c04 | ||
|   | 74be1c81b1 | ||
|   | e82a44c03d | ||
|   | 1e9eeeb980 | ||
|   | 0c7111b438 | ||
|   | ef74653a4b | ||
|   | b032f78769 | ||
|   | 7a0a8b5d2b | ||
|   | 459b374d61 | ||
|   | cc6af402be | ||
|   | f3eeadcd8f | ||
|   | 5b0b83faa7 | ||
|   | 5f289e4767 | ||
|   | a36d73cb52 | ||
|   | 9e319006f3 | ||
|   | 7b8a2aef0f | ||
|   | 4fe2f29478 | ||
|   | 76a25917c0 | ||
|   | df6c9b1a1c | ||
|   | 0ef64a6d0b | ||
|   | 1eb6ad58d5 | ||
|   | 49f8cfb0db | ||
|   | 15a8b4c6e5 | ||
|   | 97d68d7b31 | ||
|   | 4dde54e344 | ||
|   | 3304cc106e | ||
|   | dabda21eb7 | ||
|   | 0a64f638c6 | ||
|   | 3cbdfcb43d | ||
|   | b6e33e93de | ||
|   | 77b441f14c | ||
|   | 297019c22c | ||
|   | f5f2215b47 | ||
|   | 904114740b | ||
|   | d2d3f7810e | ||
|   | 2b07b3a873 | ||
|   | f6e4a1770e | ||
|   | 31006507c0 | ||
|   | 9ca6a6bf06 | ||
|   | afdacf14b7 | ||
|   | 5da18ba535 | ||
|   | e6cc937ac2 | ||
|   | 87091a2e03 | ||
|   | 59d67d3140 | ||
|   | 7b4c307c46 | ||
|   | 92484be87f | ||
|   | 56b8f8b07d | ||
|   | 722de35037 | ||
|   | d93f76c1af | ||
|   | cba0dd5e17 | ||
|   | a2e2d5ba77 | ||
|   | 61e05cb50e | ||
|   | 49e82adc6c | ||
|   | e4e668b327 | ||
|   | 8028c85c67 | ||
|   | 28cb9cae51 | ||
| ![greenkeeper[bot]](/assets/img/avatar_default.png)  | 7f2eb64131 | ||
|   | 3e5330a92b | ||
|   | 93e5e4afc0 | ||
|   | aa5528d11e | ||
|   | 251629ab61 | ||
|   | 82d94b5963 | ||
|   | 8240901332 | ||
| ![greenkeeper[bot]](/assets/img/avatar_default.png)  | 0a870b8e7e | ||
|   | 88dd653fa5 | ||
|   | b712b70330 | ||
|   | a018c2f09f | ||
|   | 04c16e53a5 | ||
|   | 5e89e73f76 | ||
|   | 2c9432d7a9 | ||
|   | 19d1775b36 | ||
|   | ecc235c545 | ||
|   | 382b1d2250 | ||
|   | 629693355a | ||
|   | 00a3f8d392 | ||
| ![greenkeeper[bot]](/assets/img/avatar_default.png)  | 80b6e8090e | ||
|   | a5f817d896 | ||
|   | 51b0244cf2 | ||
|   | 01131e2606 | ||
| ![greenkeeper[bot]](/assets/img/avatar_default.png)  | 6283b7668e | ||
|   | d058ecc4ea | ||
|   | 77a0450b5d | ||
|   | 1dd1b9084f | ||
|   | 6341807d02 | ||
| ![greenkeeper[bot]](/assets/img/avatar_default.png)  | 51a1f30225 | ||
|   | 5422482696 | ||
|   | cd7f8b080e | ||
|   | faf29b768f | ||
|   | 7576569dc9 | ||
|   | ea3bcbbc37 | ||
|   | d9f0e158a3 | ||
|   | 195f676500 | ||
|   | a9a2f4820b | ||
|   | 8414db57f0 | ||
|   | 609d68933e | 
| @@ -7,27 +7,51 @@ maintainer: | ||||
|   repository_url: https://github.com/syuilo/misskey # Repository URL | ||||
|   feedback_url: https://github.com/syuilo/misskey/issues # Feedback URL (e.g. github issue) | ||||
|  | ||||
| # URL and Port settings overview | ||||
| # e.g., If you want to realize following structure: | ||||
| # | ||||
| #               +--- https://example.com:123 ----------+ | ||||
| # +------+      |+-------------+      +---------------+| | ||||
| # | User | ---> || Proxy (123) | ---> | Misskey (456) || | ||||
| # +------+      |+-------------+      +---------------+| | ||||
| #               +--------------------------------------+ | ||||
| # | ||||
| # You need to set 'https://example.com:123' to 'url' prop and | ||||
| # You need to set 456 to 'port' prop. | ||||
| # | ||||
| # In other words, the 'url' prop should be the final accessible URL seen by a user. | ||||
| # 'port' prop is a port that the Misskey server should actually listen | ||||
| # on and it is not necessarily the port that a user accesses. | ||||
|  | ||||
| url: http://localhost/ | ||||
| # Final accessible URL seen by a user. | ||||
| url: https://example.tld/ | ||||
|  | ||||
|  | ||||
| ### Port and TLS settings ###################################### | ||||
| # | ||||
| # Misskey supports two deployment options for public. | ||||
| # | ||||
|  | ||||
| # Option 1: With Reverse Proxy | ||||
| # | ||||
| #                 +----- https://example.tld/ ------------+ | ||||
| #   +------+      |+-------------+      +----------------+| | ||||
| #   | User | ---> || Proxy (443) | ---> | Misskey (3000) || | ||||
| #   +------+      |+-------------+      +----------------+| | ||||
| #                 +---------------------------------------+ | ||||
| # | ||||
| #   You need to setup reverse proxy. (eg. Nginx) | ||||
| #   You do not define 'https' section. | ||||
|  | ||||
| # Option 2: Standalone | ||||
| # | ||||
| #                 +- https://example.tld/ -+ | ||||
| #   +------+      |   +---------------+    | | ||||
| #   | User | ---> |   | Misskey (443) |    | | ||||
| #   +------+      |   +---------------+    | | ||||
| #                 +------------------------+ | ||||
| # | ||||
| #   You need to run Misskey as root. | ||||
| #   You need to set Certificate in 'https' section. | ||||
|  | ||||
| # To use option 1, uncomment below line. | ||||
| # port: 3000    # A port that your Misskey server should listen. | ||||
|  | ||||
| # To use option 2, uncomment below lines. | ||||
| # port: 443 | ||||
| # | ||||
| # https: | ||||
| #   # path for certification | ||||
| #   key: /etc/letsencrypt/live/example.tld/privkey.pem | ||||
| #   cert: /etc/letsencrypt/live/example.tld/fullchain.pem | ||||
|  | ||||
| ################################################################ | ||||
|  | ||||
| # A port that your Misskey server should listen. | ||||
| # This value is not a port to use when accessing with a browser. | ||||
| port: 80 | ||||
|  | ||||
| mongodb: | ||||
|   host: localhost | ||||
| @@ -98,12 +122,6 @@ drive: | ||||
| # Below settings are optional | ||||
| # | ||||
|  | ||||
| # TLS | ||||
| # https: | ||||
| #   # path for certification | ||||
| #   key: example-tls-key | ||||
| #   cert: example-tls-cert | ||||
|  | ||||
| # Elasticsearch | ||||
| # elasticsearch: | ||||
| #   host: localhost | ||||
|   | ||||
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -3,3 +3,4 @@ | ||||
| *.ai -diff -text | ||||
| yarn.lock -diff -text | ||||
| package-lock.json -diff -text | ||||
| *.json5 linguist-language=JavaScript | ||||
|   | ||||
| @@ -5,6 +5,12 @@ ChangeLog | ||||
|  | ||||
| This document describes breaking changes only. | ||||
|  | ||||
| 9.0.0 | ||||
| ----- | ||||
|  | ||||
| Misskey v8.64.0 を使っている方は、9.0.0に際しては特にすべきことはありません。 | ||||
| Misskey v8.64.0 に満たないバージョンをお使いの方は、一旦8.64.0にアップデートして(そして起動して)から9.0.0に再度アップデートしてください。 | ||||
|  | ||||
| 8.0.0 | ||||
| ----- | ||||
|  | ||||
|   | ||||
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							| @@ -73,17 +73,17 @@ Please see [Contribution guide](./CONTRIBUTING.md). | ||||
| <table><tr> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13099460/43cecdbaa63a40d79bf50a96b9910b9d/1?token-time=2145916800&token-hash=d6P5MWHHsCMxUuBAEPAoVc5wLUR19mIhqAq7Ma9h9rI%3D" alt="ne_moni"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D" alt="Melilot"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/2?token-time=2145916800&token-hash=rwZ8qvbm_kpA4ib3kc07tVKupXeySpY5ATQFGxfL9v0%3D" alt="Axella"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/2?token-time=2145916800&token-hash=rwZ8qvbm_kpA4ib3kc07tVKupXeySpY5ATQFGxfL9v0%3D" alt="Xeltica"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td> | ||||
| <td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td> | ||||
| </tr><tr> | ||||
| <td><a href="https://www.patreon.com/user?u=12731202">negao</a></td> | ||||
| <td><a href="https://www.patreon.com/negao">negao</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=13099460">ne_moni</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td> | ||||
| <td><a href="https://www.patreon.com/AxellaMC">Axella</a></td> | ||||
| <td><a href="https://www.patreon.com/AxellaMC">Xeltica</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td> | ||||
| <td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td> | ||||
| @@ -91,19 +91,17 @@ Please see [Contribution guide](./CONTRIBUTING.md). | ||||
| </tr></table> | ||||
| <table><tr> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/2?token-time=2145916800&token-hash=zElv7ZcPL3viGsXbNG_KWiKrbV0vvw1gk0panx8DJoo%3D" alt="Naoki Kosaka"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D" alt="Reiju"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td> | ||||
| </tr><tr> | ||||
| <td><a href="https://www.patreon.com/user?u=5881381">Naoki Kosaka</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=12931605">Reiju</a></td> | ||||
| <td><a href="https://www.patreon.com/hiratake">Hiratake</a></td> | ||||
| <td><a href="https://www.patreon.com/dansup">dansup</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td> | ||||
| </tr></table> | ||||
|  | ||||
| **Last updated:** Sun, 02 Sep 2018 05:30:06 UTC | ||||
| **Last updated:** Tue, 02 Oct 2018 09:25:07 UTC | ||||
| <!-- PATREON_END --> | ||||
|  | ||||
| :four_leaf_clover: Copyright | ||||
|   | ||||
| @@ -439,6 +439,7 @@ common/views/pages/follow.vue: | ||||
|   following: "Following" | ||||
|   follow: "Follow" | ||||
|   request-pending: "Pending follow request" | ||||
|   follow-processing: "Processing follow" | ||||
|   follow-request: "Follow request" | ||||
| desktop: | ||||
|   banner-crop-title: "Crop the part that appears as a banner" | ||||
| @@ -565,6 +566,7 @@ desktop/views/components/follow-button.vue: | ||||
|   following: "Following" | ||||
|   follow: "Follow" | ||||
|   request-pending: "Pending follow request" | ||||
|   follow-processing: "Processing follow" | ||||
|   follow-request: "Follow request" | ||||
| desktop/views/components/followers-window.vue: | ||||
|   followers: "{}'s followers" | ||||
| @@ -1044,6 +1046,7 @@ mobile/views/components/follow-button.vue: | ||||
|   following: "Following" | ||||
|   follow: "Follow" | ||||
|   request-pending: "Pending follow request" | ||||
|   follow-processing: "Processing follow" | ||||
|   follow-request: "Follow request" | ||||
| mobile/views/components/friends-maker.vue: | ||||
|   title: "Let's follow them" | ||||
|   | ||||
| @@ -285,6 +285,37 @@ 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: "インストール" | ||||
|   installed: "「{}」をインストールしました" | ||||
|   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: "テーマを選択してください" | ||||
|   uninstall: "アンインストール" | ||||
|   uninstalled: "「{}」をアンインストールしました" | ||||
|   author: "作者" | ||||
|   desc: "説明" | ||||
|   export: "エクスポート" | ||||
|   import: "インポート" | ||||
|   import-by-code: "またはコードをペースト" | ||||
|   theme-name-required: "テーマ名は必須です。" | ||||
|  | ||||
| common/views/components/cw-button.vue: | ||||
|   hide: "隠す" | ||||
|   show: "もっと見る" | ||||
| @@ -328,6 +359,7 @@ common/views/components/note-menu.vue: | ||||
|   copy-link: "リンクをコピー" | ||||
|   favorite: "お気に入り" | ||||
|   pin: "ピン留め" | ||||
|   unpin: "ピン留め解除" | ||||
|   delete: "削除" | ||||
|   delete-confirm: "この投稿を削除しますか?" | ||||
|   remote: "投稿元で見る" | ||||
| @@ -488,6 +520,7 @@ common/views/pages/follow.vue: | ||||
|   following: "フォロー中" | ||||
|   follow: "フォロー" | ||||
|   request-pending: "フォロー許可待ち" | ||||
|   follow-processing: "フォロー処理中" | ||||
|   follow-request: "フォロー申請" | ||||
|  | ||||
| desktop: | ||||
| @@ -630,6 +663,7 @@ desktop/views/components/follow-button.vue: | ||||
|   following: "フォロー中" | ||||
|   follow: "フォロー" | ||||
|   request-pending: "フォロー許可待ち" | ||||
|   follow-processing: "フォロー処理中" | ||||
|   follow-request: "フォロー申請" | ||||
|  | ||||
| desktop/views/components/followers-window.vue: | ||||
| @@ -761,6 +795,7 @@ desktop/views/components/settings.vue: | ||||
|   2fa: "二段階認証" | ||||
|   other: "その他" | ||||
|   license: "ライセンス" | ||||
|   theme: "テーマ" | ||||
|  | ||||
|   behaviour: "動作" | ||||
|   fetch-on-scroll: "スクロールで自動読み込み" | ||||
| @@ -779,9 +814,10 @@ desktop/views/components/settings.vue: | ||||
|   choose-wallpaper: "壁紙を選択" | ||||
|   delete-wallpaper: "壁紙を削除" | ||||
|   dark-mode: "ダークモード" | ||||
|   use-shadow: "UIに影を使用" | ||||
|   rounded-corners: "UIの角を丸める" | ||||
|   circle-icons: "円形のアイコンを使用" | ||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||
|   gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" | ||||
|   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" | ||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||
|   show-clock-on-header: "右上に時計を表示する" | ||||
| @@ -790,7 +826,6 @@ desktop/views/components/settings.vue: | ||||
|   show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" | ||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||
|   show-maps: "マップの自動展開" | ||||
|   show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。" | ||||
|  | ||||
|   sound: "サウンド" | ||||
|   enable-sounds: "サウンドを有効にする" | ||||
| @@ -1205,6 +1240,7 @@ mobile/views/components/follow-button.vue: | ||||
|   following: "フォロー中" | ||||
|   follow: "フォロー" | ||||
|   request-pending: "フォロー許可待ち" | ||||
|   follow-processing: "フォロー処理中" | ||||
|   follow-request: "フォロー申請" | ||||
|  | ||||
| mobile/views/components/friends-maker.vue: | ||||
| @@ -1416,6 +1452,7 @@ mobile/views/pages/settings.vue: | ||||
|   notification-position: "通知の表示" | ||||
|   notification-position-bottom: "下" | ||||
|   notification-position-top: "上" | ||||
|   theme: "テーマ" | ||||
|   behavior: "動作" | ||||
|   fetch-on-scroll: "スクロールで自動読み込み" | ||||
|   note-visibility: "投稿の公開範囲" | ||||
|   | ||||
| @@ -13,12 +13,12 @@ common: | ||||
|     rich-contents: "投稿" | ||||
|     rich-contents-desc: "思っとること、タイガースの実況、他に言いたいことがあればなんでも言ってええで。いろんな構文あるから、好きにつこうてくれや。画像や動画、アンケートも添付できるで。" | ||||
|     reaction: "リアクション" | ||||
|     reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" | ||||
|     ui: "インターフェース" | ||||
|     ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" | ||||
|     reaction-desc: "「何思っとるか言うてみ?」言われても、わからんわ!リアクション使うて、エモーションをダイレクトに伝えるんや!Misskeyはな、他のユーザーの投稿にいろんなリアクション付けられるんや。もう「いいね」とかいうもんだけのSNSには戻れへんわな。551の豚まん食うてみ?もう他の豚まん食えへんで?" | ||||
|     ui: "インターフェイス" | ||||
|     ui-desc: "このUIええ言うてたで、知らんけど。あんたの好みのUIなんて知ったこっちゃない。Misskeyは好きにいじれるからな、レイアウトやデザイン変えたり、色んなウィジェットひっつけたりして、あんただけのMisskey作って楽しんでな!" | ||||
|     drive: "ドライブ" | ||||
|     drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" | ||||
|     outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!" | ||||
|     drive-desc: "「こないだの画像、どこやったかな…また投稿したいんやけど…」「さっきのファイルあのフォルダに直しといて」そんなこと言わんとって。Misskeyはもとからドライブ機能持っとるさかい、心配あらへん。ファイルの「わけわけ」したってな。" | ||||
|     outro: "Misskeyの機能は無限大や!知らんけど。知らん言うとるやんけ、あんたが見に行けや!Misskeyは分散型SNSやから、ここがあかんくても他がある。阪神でもオリックスでもワイは応援するで!" | ||||
|   adblock: | ||||
|     detected: "広告ブロッカーを無効にしてや" | ||||
|     warning: "<strong>Misskeyは広告を掲載してへん</strong>けど、広告をブロックしはる機能がおると一部の機能が利用できんくなったり、不具合が発生するかも分からん。知らんけど。" | ||||
| @@ -84,11 +84,11 @@ common: | ||||
|   note-visibility: | ||||
|     public: "公開" | ||||
|     home: "ホーム" | ||||
|     home-desc: "ホームタイムラインにのみ公開" | ||||
|     home-desc: "ホームタイムライン以外に見せんとって" | ||||
|     followers: "フォロワー" | ||||
|     followers-desc: "自分のフォロワーにのみ公開" | ||||
|     followers-desc: "自分のフォロワー以外に見せんとって" | ||||
|     specified: "ダイレクト" | ||||
|     specified-desc: "指定したユーザーにのみ公開" | ||||
|     specified-desc: "今から言うユーザー以外に見せんとってや" | ||||
|     private: "非公開" | ||||
|   note-placeholders: | ||||
|     a: "今なにしてん?" | ||||
| @@ -109,12 +109,12 @@ common: | ||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストをつけんで!" | ||||
|   verified-user: "アメちゃん付きアカウント" | ||||
|   disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める" | ||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||
|   show-full-acct: "ユーザー名のホストを省略しない" | ||||
|   reduce-motion: "UIの動きを減らす" | ||||
|   always-show-nsfw: "閲覧注意?見せたらあかん?そんなん知らんわ、見せろや!" | ||||
|   always-mark-nsfw: "わからんからとりあえずメディアは見せたらあかん" | ||||
|   show-full-acct: "ユーザー名のホストも出したる" | ||||
|   reduce-motion: "UI、動き過ぎや、静かにしてや" | ||||
|   this-setting-is-this-device-only: "このデバイスのみ" | ||||
|   do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' | ||||
|   do-not-use-in-production: '開発ビルドや。本番環境で使わんといて!知らんで!' | ||||
|   reversi: | ||||
|     drawn: "おあいこ" | ||||
|     my-turn: "あんさんのターンや" | ||||
| @@ -157,7 +157,7 @@ common: | ||||
|     hybrid: "ソーシャル" | ||||
|     hashtag: "ハッシュタグ" | ||||
|     global: "グローバル" | ||||
|     mentions: "あなた宛て" | ||||
|     mentions: "あんた宛て" | ||||
|     direct: "ダイレクト投稿" | ||||
|     notifications: "通知" | ||||
|     list: "リスト" | ||||
| @@ -262,11 +262,11 @@ common/views/components/connect-failed.troubleshooter.vue: | ||||
|   flush: "キャッシュの削除" | ||||
|   set-version: "バージョン指定" | ||||
| common/views/components/media-banner.vue: | ||||
|   sensitive: "閲覧注意" | ||||
|   click-to-show: "クリックして表示" | ||||
|   sensitive: "見せたらあかん" | ||||
|   click-to-show: "押してみ、見せたるわ" | ||||
| common/views/components/cw-button.vue: | ||||
|   hide: "隠す" | ||||
|   show: "もっと見る" | ||||
|   hide: "見せへんわ" | ||||
|   show: "もっとあるやろ!" | ||||
| common/views/components/messaging.vue: | ||||
|   search-user: "ユーザーを探す" | ||||
|   you: "あんさん" | ||||
| @@ -303,7 +303,7 @@ common/views/components/note-menu.vue: | ||||
|   pin: "ピン留め" | ||||
|   delete: "ほかす" | ||||
|   delete-confirm: "この投稿を削除してもええか?" | ||||
|   remote: "投稿元で見る" | ||||
|   remote: "投稿元に行ってみよか" | ||||
| common/views/components/poll.vue: | ||||
|   vote-to: "「{}」に投票や!" | ||||
|   vote-count: "{}票" | ||||
| @@ -318,7 +318,7 @@ common/views/components/poll-editor.vue: | ||||
|   add: "+選択肢を追加" | ||||
|   destroy: "アンケートをほかそ" | ||||
| common/views/components/reaction-picker.vue: | ||||
|   choose-reaction: "リアクションを選択" | ||||
|   choose-reaction: "リアクション、どれにするんや?" | ||||
| common/views/components/signin.vue: | ||||
|   username: "ユーザー名" | ||||
|   password: "パスワード" | ||||
| @@ -330,7 +330,7 @@ common/views/components/signin.vue: | ||||
|   login-failed: "なんかログインできんかったわ。ユーザー名とパスワードとかを確認してや。" | ||||
| common/views/components/signup.vue: | ||||
|   invitation-code: "招待コード" | ||||
|   invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。" | ||||
|   invitation-info: "招待コードをもっとらんのやったら、<a href=\"{}\">管理者</a>まで連絡してや。" | ||||
|   username: "ユーザー名" | ||||
|   checking: "確認中や…" | ||||
|   available: "使えるで" | ||||
| @@ -338,7 +338,7 @@ common/views/components/signup.vue: | ||||
|   error: "通信あかんわ" | ||||
|   invalid-format: "a~z、A~Z、0~9、_が使えるで" | ||||
|   too-short: "1文字以上やで!" | ||||
|   too-long: "20文字以内でお願いします" | ||||
|   too-long: "20文字以内やで" | ||||
|   password: "パスワード" | ||||
|   password-placeholder: "8文字以上にしときや" | ||||
|   weak-password: "へぼいパスワード" | ||||
| @@ -352,8 +352,8 @@ common/views/components/signup.vue: | ||||
|   create: "アカウント作成" | ||||
|   some-error: "何かよう分からんけど、アカウントの作成に失敗してしもたわ。すまんがもっぺん試してくれへんか?" | ||||
| common/views/components/special-message.vue: | ||||
|   new-year: "Happy New Year!" | ||||
|   christmas: "Merry Christmas!" | ||||
|   new-year: "おおきに。今年もよろしゅう。" | ||||
|   christmas: "メリークリスマス!" | ||||
| common/views/components/stream-indicator.vue: | ||||
|   connecting: "つないどるで" | ||||
|   reconnecting: "つなぎ直すで" | ||||
| @@ -370,19 +370,19 @@ common/views/components/uploader.vue: | ||||
| common/views/components/visibility-chooser.vue: | ||||
|   public: "公開" | ||||
|   home: "ホーム" | ||||
|   home-desc: "ホームタイムラインにのみ公開" | ||||
|   home-desc: "ホームタイムライン以外に見せんとって" | ||||
|   followers: "フォロワー" | ||||
|   followers-desc: "自分のフォロワーにのみ公開" | ||||
|   followers-desc: "自分のフォロワー以外に見せんとって" | ||||
|   specified: "ダイレクト" | ||||
|   specified-desc: "指定したユーザーにのみ公開" | ||||
|   specified-desc: "今から言うユーザー以外に見せんとってや" | ||||
|   private: "非公開" | ||||
| common/views/components/trends.vue: | ||||
|   count: "{}人が投稿" | ||||
|   empty: "トレンドなし" | ||||
|   empty: "流行は自分で作るんや" | ||||
| common/views/widgets/broadcast.vue: | ||||
|   fetching: "見てみるわ…" | ||||
|   no-broadcasts: "お知らせはあらへんで" | ||||
|   have-a-nice-day: "良い一日を!" | ||||
|   have-a-nice-day: "おおきに!" | ||||
|   next: "次" | ||||
| common/views/widgets/calendar.vue: | ||||
|   year: "{}年" | ||||
| @@ -436,21 +436,21 @@ common/views/widgets/tips.vue: | ||||
|   tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで" | ||||
| common/views/pages/follow.vue: | ||||
|   signed-in-as: "{}としてサインイン中" | ||||
|   following: "フォロー中" | ||||
|   following: "フォローしとる" | ||||
|   follow: "フォロー" | ||||
|   request-pending: "フォロー許可待ち" | ||||
|   follow-request: "フォロー申請" | ||||
|   request-pending: "フォローの許し待っとる" | ||||
|   follow-request: "フォロー許してくれや!言うてみる" | ||||
| desktop: | ||||
|   banner-crop-title: "バナーとして表示する部分を選択" | ||||
|   banner-crop-title: "どこバナーとして出す?" | ||||
|   banner: "バナー" | ||||
|   uploading-banner: "新しいバナーをアップロードしとるで" | ||||
|   banner-updated: "バナーを更新したで" | ||||
|   choose-banner: "バナーにする画像選んでや" | ||||
|   avatar-crop-title: "どこアバターとして出しとく?" | ||||
|   avatar: "アバター" | ||||
|   uploading-avatar: "新しいアバターをアップロードしています" | ||||
|   avatar-updated: "アバターを更新しました" | ||||
|   choose-avatar: "アバターにする画像を選択" | ||||
|   uploading-avatar: "新しいアバターをアップロードしとるで" | ||||
|   avatar-updated: "アバターを更新したで" | ||||
|   choose-avatar: "アバターにする画像選んでや" | ||||
|   invalid-filetype: "この形式のファイル無理やねん" | ||||
| desktop/views/components/activity.chart.vue: | ||||
|   total: "Black ... Total" | ||||
| @@ -459,7 +459,7 @@ desktop/views/components/activity.chart.vue: | ||||
|   renotes: "Green ... Renotes" | ||||
| desktop/views/components/activity.vue: | ||||
|   title: "アクティビティ" | ||||
|   toggle: "表示を切り替え" | ||||
|   toggle: "表示変える" | ||||
| desktop/views/components/calendar.vue: | ||||
|   title: "{1}年 {2} 月" | ||||
|   prev: "前の月" | ||||
| @@ -474,10 +474,10 @@ desktop/views/components/charts.vue: | ||||
|   drive: "ドライブ" | ||||
|   network: "ネットワーク" | ||||
|   charts: | ||||
|     notes: "投稿の増減 (統合)" | ||||
|     notes: "投稿の増減(統合)" | ||||
|     local-notes: "投稿の増減 (ローカル)" | ||||
|     remote-notes: "投稿の増減 (リモート)" | ||||
|     notes-total: "投稿の累計" | ||||
|     notes-total: "全部の投稿" | ||||
|     users: "ユーザーの増減" | ||||
|     users-total: "ユーザーの累計" | ||||
|     drive: "ドライブ使用量の増減" | ||||
| @@ -488,21 +488,21 @@ desktop/views/components/charts.vue: | ||||
|     network-time: "応答時間" | ||||
|     network-usage: "通信量" | ||||
| desktop/views/components/choose-file-from-drive-window.vue: | ||||
|   choose-file: "ファイル選択中" | ||||
|   upload: "PCからドライブにファイルをアップロード" | ||||
|   choose-file: "ファイル選択しとる" | ||||
|   upload: "PCからドライブにファイル上げる" | ||||
|   cancel: "やめとくわ" | ||||
|   ok: "決定" | ||||
|   choose-prompt: "ファイルを選択" | ||||
|   ok: "そうする" | ||||
|   choose-prompt: "ファイル選んでや" | ||||
| desktop/views/components/choose-folder-from-drive-window.vue: | ||||
|   cancel: "やめとくわ" | ||||
|   ok: "決定" | ||||
|   choose-prompt: "フォルダを選択" | ||||
|   ok: "そうする" | ||||
|   choose-prompt: "フォルダ選んでや" | ||||
| desktop/views/components/crop-window.vue: | ||||
|   skip: "クロップをスキップ" | ||||
|   skip: "クロップせーへんわ" | ||||
|   cancel: "やめとくわ" | ||||
|   ok: "決定" | ||||
|   ok: "そうする" | ||||
| desktop/views/components/drive-window.vue: | ||||
|   used: "使用中" | ||||
|   used: "使うとる" | ||||
|   drive: "ドライブ" | ||||
| desktop/views/components/drive.file.vue: | ||||
|   avatar: "アイコン" | ||||
| @@ -538,17 +538,17 @@ desktop/views/components/drive.nav-folder.vue: | ||||
| desktop/views/components/drive.vue: | ||||
|   search: "検索" | ||||
|   load-more: "もっとあらへんのか!" | ||||
|   empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね" | ||||
|   empty-draghover: "ドロップするにゃ!お魚以外なら何でもいいにゃ!" | ||||
|   empty-drive: "ドライブには何もあらへんで。" | ||||
|   empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。" | ||||
|   empty-folder: "このフォルダーは空です" | ||||
|   empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできんねん。" | ||||
|   empty-folder: "このフォルダーは空や" | ||||
|   unable-to-process: "あかん、無理やわ" | ||||
|   circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。" | ||||
|   circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーや。" | ||||
|   unhandled-error: "ようわからん" | ||||
|   url-upload: "URLアップロード" | ||||
|   url-of-file: "このURLのファイルをアップロードしたいねん" | ||||
|   url-upload-requested: "アップロードしたい言うといたで" | ||||
|   may-take-time: "アップロードが完了するまで時間がかかる場合があります。" | ||||
|   may-take-time: "アップロード終わるまで時間かかるわ、知らんけど。たこ焼き何個食べれるやろか…" | ||||
|   create-folder: "フォルダー作成" | ||||
|   folder-name: "フォルダー名" | ||||
|   contextmenu: | ||||
| @@ -579,7 +579,7 @@ desktop/views/components/friends-maker.vue: | ||||
|   empty: "おもろいユーザー居らんかったわ" | ||||
|   fetching: "読みこんどるで…" | ||||
|   refresh: "もっとあるやろ!" | ||||
|   close: "閉じる" | ||||
|   close: "さいなら" | ||||
| desktop/views/components/game-window.vue: | ||||
|   game: "ゲーム" | ||||
| desktop/views/components/home.vue: | ||||
| @@ -606,9 +606,9 @@ desktop/views/components/notes.note.vue: | ||||
|   reply: "返す" | ||||
|   renote: "Renote" | ||||
|   add-reaction: "リアクション" | ||||
|   detail: "詳細" | ||||
|   private: "この投稿は非公開です" | ||||
|   deleted: "この投稿は削除されました" | ||||
|   detail: "もっと" | ||||
|   private: "この投稿は見せられへんわ" | ||||
|   deleted: "この投稿なんか無くなってもうたわ" | ||||
| desktop/views/components/notes.vue: | ||||
|   error: "あかん、読み込めへんわ" | ||||
|   retry: "もっぺん" | ||||
| @@ -656,11 +656,11 @@ desktop/views/components/renote-form.vue: | ||||
|   quote: "持ってくる…" | ||||
|   cancel: "やめとくわ" | ||||
|   renote: "Renote" | ||||
|   reposting: "しています..." | ||||
|   success: "Renoteしました!" | ||||
|   failure: "Renoteに失敗しました" | ||||
|   reposting: "やっとります..." | ||||
|   success: "Renoteしたで!" | ||||
|   failure: "Renoteでけへん" | ||||
| desktop/views/components/renote-form-window.vue: | ||||
|   title: "この投稿をRenoteしますか?" | ||||
|   title: "この投稿をRenoteしてもええか?" | ||||
| desktop/views/components/settings-window.vue: | ||||
|   settings: "設定" | ||||
| desktop/views/components/settings.vue: | ||||
| @@ -669,27 +669,27 @@ desktop/views/components/settings.vue: | ||||
|   apps: "アプリ" | ||||
|   mute: "ミュート" | ||||
|   drive: "ドライブ" | ||||
|   security: "セキュリティ" | ||||
|   signin: "サインイン履歴" | ||||
|   security: "守護神セキュリティ" | ||||
|   signin: "こんな感じでサインインしたらしいで" | ||||
|   password: "パスワード" | ||||
|   2fa: "二段階認証" | ||||
|   other: "その他" | ||||
|   license: "ライセンス" | ||||
|   behaviour: "動作" | ||||
|   fetch-on-scroll: "スクロールで自動読み込み" | ||||
|   fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。" | ||||
|   behaviour: "動き" | ||||
|   fetch-on-scroll: "スクロールしたらもっと見せてや" | ||||
|   fetch-on-scroll-desc: "ページを下までスクロールしたときに自動でもっとコンテンツを読み込むで。" | ||||
|   note-visibility: "投稿の公開範囲" | ||||
|   default-note-visibility: "デフォルトの公開範囲" | ||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||
|   default-note-visibility: "もとからの公開範囲" | ||||
|   remember-note-visibility: "投稿の公開範囲おぼえといて" | ||||
|   auto-popout: "ウィンドウの自動ポップアウト" | ||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" | ||||
|   advanced: "詳細設定" | ||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。" | ||||
|   advanced: "もっと設定" | ||||
|   api-via-stream: "ストリームを経由したAPIリクエスト" | ||||
|   api-via-stream-desc: "この設定をオンにすると、WebSocket接続を経由してAPIリクエストが行われんで(パフォーマンス向上するかも、知らんけど)。オフにすると、ネイティブの fetch API が利用されるで。この設定はこのデバイスのみ有効やで。" | ||||
|   display: "デザインと表示" | ||||
|   display: "見た感じ" | ||||
|   customize: "ホームをカスタマイズ" | ||||
|   choose-wallpaper: "壁紙を選択" | ||||
|   delete-wallpaper: "壁紙を削除" | ||||
|   choose-wallpaper: "壁紙選ぶ" | ||||
|   delete-wallpaper: "壁紙ほかす" | ||||
|   dark-mode: "夜にすんで" | ||||
|   circle-icons: "アイコンもタコ焼きも丸いやんな?" | ||||
|   contrasted-acct: "ユーザー名ようわからんし見やすしといて" | ||||
| @@ -722,39 +722,39 @@ desktop/views/components/settings.vue: | ||||
|   cache-cleared: "キャッシュお掃除したで" | ||||
|   cache-cleared-desc: "もっぺんページ読みこみ直してくれや" | ||||
|   auto-watch: "投稿勝手にウォッチしといてや" | ||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||
|   about: "Misskeyについて" | ||||
|   operator: "このサーバーの運営者" | ||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を勝手に受け取るようにすんで。" | ||||
|   about: "Misskeyってなんや?" | ||||
|   operator: "このサーバー誰のや" | ||||
|   update: "Misskey Update" | ||||
|   version: "バージョン:" | ||||
|   latest-version: "最新のバージョン:" | ||||
|   update-checking: "アップデートを確認中" | ||||
|   do-update: "アップデートを確認" | ||||
|   update-settings: "詳細設定" | ||||
|   prevent-update: "アップデートを延期する(非推奨)" | ||||
|   prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。" | ||||
|   no-updates: "利用可能な更新はありません" | ||||
|   update-checking: "アップデートはあらへんか…" | ||||
|   do-update: "アップデートあるか見てみる" | ||||
|   update-settings: "もっと設定" | ||||
|   prevent-update: "アップデートしたないわ、また今度や(やめときや)" | ||||
|   prevent-update-desc: "この設定をオンにしとってもアップデートが反映される場合があるかも分からん、知らんけど気ぃつけてや。この設定はこのデバイスのみ有効やで。" | ||||
|   no-updates: "使える更新はあらへん" | ||||
|   no-updates-desc: "つこてるMisskeyは最新や!" | ||||
|   update-available: "新しいバージョンが利用可能や" | ||||
|   update-available-desc: "ページを再度読み込みすると更新が適用されるで。" | ||||
|   advanced-settings: "高度な設定" | ||||
|   debug-mode: "デバッグモードを有効にする" | ||||
|   debug-mode-desc: "この設定はブラウザに記憶されます。" | ||||
|   experimental: "実験的機能を有効にする" | ||||
|   experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。" | ||||
|   advanced-settings: "ワイにはわからん設定" | ||||
|   debug-mode: "デバッグモードにしてみる" | ||||
|   debug-mode-desc: "この設定はブラウザに記憶されんで。" | ||||
|   experimental: "お試し機能使うてみる" | ||||
|   experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になるかも分からん、知らんけど気ぃつけてや。この設定はブラウザに記憶されんで。" | ||||
|   tools: "ツール" | ||||
|   task-manager: "タスクマネージャ" | ||||
|   third-parties: "サードパーティ" | ||||
| desktop/views/components/settings.2fa.vue: | ||||
|   intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。" | ||||
|   intro: "二段階認証を設定すると、サインイン時にパスワードだけとちゃうくて、予め登録しておいた物理的なデバイス(例えばあんさんのスマートフォンなど)も必要になり、よりセキュリティが向上すんで。" | ||||
|   detail: "詳細..." | ||||
|   url: "https://www.google.co.jp/intl/ja/landing/2step/" | ||||
|   caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。" | ||||
|   register: "デバイスを登録する" | ||||
|   already-registered: "既に設定は完了しています。" | ||||
|   unregister: "設定を解除" | ||||
|   unregistered: "二段階認証が無効になりました。" | ||||
|   enter-password: "パスワードを入力してください" | ||||
|   caution: "登録したデバイスを紛失してもうたら、もうMisskeyにサインインできんくなるで。" | ||||
|   register: "デバイス登録する" | ||||
|   already-registered: "もう設定終わっとるわ" | ||||
|   unregister: "設定をほかす" | ||||
|   unregistered: "二段階認証もうせーへんで" | ||||
|   enter-password: "パスワードを入れてや" | ||||
|   authenticator: "まず、Google Authenticatorとかのをつこてるデバイスにインストールしてや:" | ||||
|   howtoinstall: "インストール方法はここやで" | ||||
|   scan: "んで、ここに出とるQRコードをスキャンしてな:" | ||||
| @@ -779,28 +779,28 @@ desktop/views/components/settings.mute.vue: | ||||
|   no-users: "ミュートしているユーザーはおらんで" | ||||
| desktop/views/components/settings.password.vue: | ||||
|   reset: "パスワードを変更する" | ||||
|   enter-current-password: "現在のパスワードを入力してください" | ||||
|   enter-new-password: "新しいパスワードを入力してください" | ||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||
|   not-match: "新しいパスワードが一致しません" | ||||
|   changed: "パスワードを変更しました" | ||||
|   enter-current-password: "今のパスワードを入れてや" | ||||
|   enter-new-password: "さらのパスワード入れてや" | ||||
|   enter-new-password-again: "もういっぺんさらのパスワードを入れてや" | ||||
|   not-match: "パスワードがおうとらん" | ||||
|   changed: "パスワード変えたわ" | ||||
| desktop/views/components/settings.profile.vue: | ||||
|   avatar: "アイコン" | ||||
|   choice-avatar: "画像を選択" | ||||
|   choice-avatar: "画像選んでや" | ||||
|   name: "名前" | ||||
|   location: "場所" | ||||
|   description: "自己紹介" | ||||
|   description: "ワイのこと" | ||||
|   birthday: "誕生日" | ||||
|   save: "保存" | ||||
|   locked-account: "アカウントの保護" | ||||
|   is-locked: "フォローを承認制にする" | ||||
|   locked-account: "アカウント守る" | ||||
|   is-locked: "他人のフォローは許してからや!" | ||||
|   other: "その他" | ||||
|   is-bot: "このアカウントはBotです" | ||||
|   is-cat: "このアカウントはCatです" | ||||
|   profile-updated: "プロフィールを更新しました" | ||||
|   is-bot: "このアカウントはBotやで" | ||||
|   is-cat: "このアカウントはCatやで" | ||||
|   profile-updated: "プロフィールを更新したで" | ||||
| desktop/views/components/sub-note-content.vue: | ||||
|   private: "この投稿は非公開です" | ||||
|   deleted: "この投稿は削除されました" | ||||
|   private: "この投稿は見せられへんわ" | ||||
|   deleted: "この投稿なんか無くなってもうたわ" | ||||
|   media-count: "{}つのメディア" | ||||
|   poll: "アンケート" | ||||
| desktop/views/components/taskmanager.vue: | ||||
| @@ -810,27 +810,27 @@ desktop/views/components/timeline.vue: | ||||
|   local: "ローカル" | ||||
|   hybrid: "ソーシャル" | ||||
|   global: "グローバル" | ||||
|   mentions: "あなた宛て" | ||||
|   mentions: "あんた宛て" | ||||
|   messages: "メッセージ" | ||||
|   list: "リスト" | ||||
|   hashtag: "ハッシュタグ" | ||||
|   add-tag-timeline: "ハッシュタグを追加" | ||||
|   add-list: "リストを追加" | ||||
|   add-tag-timeline: "ハッシュタグ増やす" | ||||
|   add-list: "リストに入れる" | ||||
|   list-name: "リスト名" | ||||
| desktop/views/components/ui.header.vue: | ||||
|   welcome-back: "おかえり、" | ||||
|   adjective: "さん" | ||||
|   adjective: "はん" | ||||
| desktop/views/components/ui.header.account.vue: | ||||
|   profile: "プロフィール" | ||||
|   drive: "ドライブ" | ||||
|   favorites: "お気に入り" | ||||
|   lists: "リスト" | ||||
|   follow-requests: "フォロー申請" | ||||
|   follow-requests: "フォロー許してくれや!言うてみる" | ||||
|   customize: "ホームをカスタマイズ" | ||||
|   admin: "管理" | ||||
|   settings: "設定" | ||||
|   signout: "サインアウト" | ||||
|   dark: "闇に飲まれる" | ||||
|   signout: "さいなら" | ||||
|   dark: "ナイトゲームじゃ!" | ||||
| desktop/views/components/ui.header.nav.vue: | ||||
|   home: "ホーム" | ||||
|   deck: "デッキ" | ||||
| @@ -843,9 +843,9 @@ desktop/views/components/ui.header.post.vue: | ||||
| desktop/views/components/ui.header.search.vue: | ||||
|   placeholder: "検索" | ||||
| desktop/views/components/received-follow-requests-window.vue: | ||||
|   title: "フォロー申請" | ||||
|   accept: "承認" | ||||
|   reject: "拒否" | ||||
|   title: "フォロー許してくれや!言うてみる" | ||||
|   accept: "許す" | ||||
|   reject: "許さん" | ||||
| desktop/views/components/user-lists-window.vue: | ||||
|   title: "リスト" | ||||
|   create-list: "新しいリストを作成" | ||||
| @@ -856,14 +856,14 @@ desktop/views/components/user-preview.vue: | ||||
|   followers: "フォロワー" | ||||
| desktop/views/components/users-list.vue: | ||||
|   all: "すべて" | ||||
|   iknow: "知り合い" | ||||
|   iknow: "知っとる" | ||||
|   load-more: "もっと" | ||||
|   fetching: "読み込んでいます" | ||||
|   fetching: "読みこんどるで…" | ||||
| desktop/views/components/users-list-item.vue: | ||||
|   followed: "フォローされています" | ||||
|   followed: "フォローされとるで" | ||||
| desktop/views/components/window.vue: | ||||
|   popout: "ポップアウト" | ||||
|   close: "閉じる" | ||||
|   close: "さいなら" | ||||
| desktop/views/pages/admin/admin.vue: | ||||
|   dashboard: "ダッシュボード" | ||||
|   drive: "ドライブ" | ||||
| @@ -871,15 +871,15 @@ desktop/views/pages/admin/admin.vue: | ||||
|   update: "更新" | ||||
| desktop/views/pages/admin/admin.dashboard.vue: | ||||
|   dashboard: "ダッシュボード" | ||||
|   all-users: "全てのユーザー" | ||||
|   original-users: "このインスタンスのユーザー" | ||||
|   all-users: "知り合い全員や" | ||||
|   original-users: "ここの人らだけ" | ||||
|   all-notes: "全ての投稿" | ||||
|   original-notes: "このインスタンスの投稿" | ||||
|   invite: "招待" | ||||
|   invite: "来てや" | ||||
| desktop/views/pages/admin/admin.suspend-user.vue: | ||||
|   suspend-user: "ユーザーの凍結" | ||||
|   suspend: "凍結" | ||||
|   suspended: "凍結しました" | ||||
|   suspended: "凍結したで" | ||||
| desktop/views/pages/admin/admin.unsuspend-user.vue: | ||||
|   unsuspend-user: "ユーザーの凍結の解除" | ||||
|   unsuspend: "凍結の解除" | ||||
| @@ -889,33 +889,33 @@ desktop/views/pages/admin/admin.verify-user.vue: | ||||
|   verify: "公式アカウントにする" | ||||
|   verified: "公式アカウントにしたで" | ||||
| desktop/views/pages/admin/admin.unverify-user.vue: | ||||
|   unverify-user: "ユーザーの公式アカウント解除" | ||||
|   unverify: "公式アカウントを解除する" | ||||
|   unverified: "公式アカウントを解除しました" | ||||
|   unverify-user: "ユーザーの公式アカウントにせーへん" | ||||
|   unverify: "公式アカウントにはさせへんで" | ||||
|   unverified: "公式アカウントを解除したで" | ||||
| desktop/views/pages/deck/deck.tl-column.vue: | ||||
|   is-media-only: "メディア投稿のみ" | ||||
|   is-media-only: "メディア投稿だけや" | ||||
|   is-media-view: "メディアビュー" | ||||
|   edit: "オプション" | ||||
| desktop/views/pages/deck/deck.note.vue: | ||||
|   reposted-by: "{}がRenote" | ||||
|   private: "この投稿は非公開です" | ||||
|   deleted: "この投稿は削除されました" | ||||
|   private: "この投稿は見せられへんわ" | ||||
|   deleted: "この投稿なんか無くなってもうたわ" | ||||
| desktop/views/pages/stats/stats.vue: | ||||
|   all-users: "全てのユーザー" | ||||
|   original-users: "このインスタンスのユーザー" | ||||
|   original-users: "ここの人らだけ" | ||||
|   all-notes: "全ての投稿" | ||||
|   original-notes: "このインスタンスの投稿" | ||||
| desktop/views/pages/welcome.vue: | ||||
|   about: "詳しく..." | ||||
|   gotit: "わかった" | ||||
|   about: "もっと…" | ||||
|   gotit: "ほい" | ||||
|   signin: "サインイン" | ||||
|   signup: "サインアップ" | ||||
|   signin-button: "サインイン中…" | ||||
|   signup-button: "サインアップ" | ||||
|   timeline: "タイムライン" | ||||
|   announcements: "お知らせ" | ||||
|   announcements: "知っときや" | ||||
|   photos: "最近の画像" | ||||
|   powered-by-misskey: "Powered by <b>Misskey</b>." | ||||
|   powered-by-misskey: "<b>Misskey</b>のおかげや" | ||||
|   info: "情報" | ||||
| desktop/views/pages/drive.vue: | ||||
|   title: "ドライブ" | ||||
| @@ -924,41 +924,41 @@ desktop/views/pages/favorites.vue: | ||||
| desktop/views/pages/home-customize.vue: | ||||
|   title: "ホームをカスタマイズ" | ||||
| desktop/views/pages/note.vue: | ||||
|   prev: "前の投稿" | ||||
|   next: "次の投稿" | ||||
|   prev: "前のやつ" | ||||
|   next: "次のやつ" | ||||
| desktop/views/pages/selectdrive.vue: | ||||
|   title: "ファイルを選択してください" | ||||
|   title: "ファイルを選択してや" | ||||
|   ok: "決定" | ||||
|   cancel: "やめとくわ" | ||||
|   upload: "PCからドライブにファイルをアップロード" | ||||
|   upload: "PCからドライブにファイル上げる" | ||||
| desktop/views/pages/search.vue: | ||||
|   not-available: "検索機能はインスタンスの設定で無効になっています。" | ||||
|   not-found: "「{}」に関する投稿は見つかりませんでした。" | ||||
|   not-available: "検索機能は使えへんわ。管理者がそう言うとる。" | ||||
|   not-found: "「{}」に関する投稿はあらへん。" | ||||
| desktop/views/pages/share.vue: | ||||
|   share-with: "{}で共有" | ||||
| desktop/views/pages/tag.vue: | ||||
|   no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。" | ||||
|   no-posts-found: "ハッシュタグ「{}」が付けられた投稿はあらへん。" | ||||
| desktop/views/pages/user-list.users.vue: | ||||
|   users: "ユーザー" | ||||
|   add-user: "ユーザーを追加" | ||||
|   add-user: "ユーザー増やす" | ||||
|   username: "ユーザー名" | ||||
| desktop/views/pages/user/user.followers-you-know.vue: | ||||
|   title: "知り合いのフォロワー" | ||||
|   loading: "読み込み中" | ||||
|   no-users: "知り合いのフォロワーはいません" | ||||
|   title: "知っとるフォロワー" | ||||
|   loading: "読み込んどる…" | ||||
|   no-users: "フォロワー全員知らんわ" | ||||
| desktop/views/pages/user/user.friends.vue: | ||||
|   title: "よく話すユーザー" | ||||
|   loading: "読み込み中" | ||||
|   no-users: "よく話すユーザーはいません" | ||||
|   title: "よう話すツレ" | ||||
|   loading: "読み込んどる…" | ||||
|   no-users: "よう話すツレは居らん" | ||||
| desktop/views/pages/user/user.vue: | ||||
|   is-suspended: "このユーザーは凍結されています。" | ||||
|   is-remote: "このユーザーはリモートユーザーです。" | ||||
|   view-remote: "正確な情報を見る" | ||||
|   is-suspended: "このユーザーはあかんわ。凍結されとる。" | ||||
|   is-remote: "このユーザーはリモートユーザーや。" | ||||
|   view-remote: "ちゃんとした情報を見る" | ||||
| desktop/views/pages/user/user.home.vue: | ||||
|   last-used-at: "最終アクセス" | ||||
|   last-used-at: "最後いつ来た?" | ||||
| desktop/views/pages/user/user.photos.vue: | ||||
|   title: "写真" | ||||
|   loading: "読み込み中" | ||||
|   loading: "読み込んどる…" | ||||
|   no-photos: "写真はあらへんで" | ||||
| desktop/views/pages/user/user.profile.vue: | ||||
|   follows-you: "フォローされとるで" | ||||
| @@ -974,12 +974,12 @@ desktop/views/pages/user/user.header.vue: | ||||
|   posts: "投稿" | ||||
|   following: "フォロー" | ||||
|   followers: "フォロワー" | ||||
|   is-bot: "このアカウントはBotです" | ||||
|   is-bot: "このアカウントはBotや" | ||||
| desktop/views/pages/user/user.timeline.vue: | ||||
|   default: "投稿" | ||||
|   with-replies: "投稿と返信" | ||||
|   with-media: "メディア" | ||||
|   empty: "このユーザーはまだ何も投稿していないようです。" | ||||
|   empty: "このユーザーはまだ何も投稿しとらんようや。" | ||||
| desktop/views/widgets/messaging.vue: | ||||
|   title: "メッセージ" | ||||
| desktop/views/widgets/notifications.vue: | ||||
| @@ -993,76 +993,76 @@ desktop/views/widgets/post-form.vue: | ||||
|   title: "投稿" | ||||
|   note: "投稿" | ||||
| desktop/views/widgets/profile.vue: | ||||
|   update-banner: "クリックでバナー編集" | ||||
|   update-avatar: "クリックでアバター編集" | ||||
|   update-banner: "クリックしてバナー編集" | ||||
|   update-avatar: "クリックしてアバター編集" | ||||
| desktop/views/widgets/trends.vue: | ||||
|   title: "トレンド" | ||||
|   title: "流行" | ||||
|   refresh: "他を見る" | ||||
|   nothing: "ありません!" | ||||
|   nothing: "あらへん!" | ||||
| desktop/views/widgets/users.vue: | ||||
|   title: "おすすめユーザー" | ||||
|   refresh: "他を見る" | ||||
|   no-one: "いません!" | ||||
|   no-one: "おらん!" | ||||
| mobile/views/components/drive.vue: | ||||
|   drive: "ドライブ" | ||||
|   used: "使用中" | ||||
|   used: "使うとる" | ||||
|   folder-count: "フォルダ" | ||||
|   count-separator: "、" | ||||
|   file-count: "ファイル" | ||||
|   load-more: "もっと読み込む" | ||||
|   load-more: "もっとあらへんのか!" | ||||
|   nothing-in-drive: "ドライブには何もあらへんで。" | ||||
|   folder-is-empty: "このフォルダは空です" | ||||
|   prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>" | ||||
|   deletion-alert: "ごめんなさい!フォルダの削除は未実装です...。" | ||||
|   folder-is-empty: "このフォルダ何もないわ" | ||||
|   prompt: "何すんの?(数字を入れてや): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>" | ||||
|   deletion-alert: "フォルダの削除は未実装やねん...。堪忍な!" | ||||
|   folder-name: "フォルダー名" | ||||
|   root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。" | ||||
|   root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。" | ||||
|   url-prompt: "アップロードしたいファイルのURL" | ||||
|   uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。" | ||||
|   root-rename-alert: "現在おる場所はルートで、フォルダとちゃうから名前の変更はできへん。名前を変更したいフォルダに移動してからやってな。" | ||||
|   root-move-alert: "現在おる場所はルートで、フォルダとちゃうから移動はできへん。移動したいフォルダに移動してからやってな。" | ||||
|   url-prompt: "このURLのファイルをアップロードしたいねん" | ||||
|   uploading: "アップロードをリクエストしたで。アップロードが完了するまで時間がかかるかも分からん、知らんけど。" | ||||
| mobile/views/components/drive-file-detail.vue: | ||||
|   rename: "名前を変更" | ||||
|   rename: "名前を変えるで" | ||||
| mobile/views/components/drive-file-chooser.vue: | ||||
|   select-file: "ファイルを選択" | ||||
|   select-file: "ファイル選んでや" | ||||
| mobile/views/components/drive-folder-chooser.vue: | ||||
|   select-folder: "フォルダーを選択" | ||||
|   select-folder: "フォルダ選んでや" | ||||
| mobile/views/components/drive.file.vue: | ||||
|   nsfw: "閲覧注意" | ||||
|   nsfw: "ちょっと見せられへんわ" | ||||
| mobile/views/components/drive.file-detail.vue: | ||||
|   download: "ダウンロード" | ||||
|   rename: "名前を変更" | ||||
|   rename: "名前を変えるで" | ||||
|   move: "移動" | ||||
|   hash: "ハッシュ (md5)" | ||||
|   hash: "ハッシュ(md5)" | ||||
|   exif: "EXIF" | ||||
|   nsfw: "閲覧注意" | ||||
|   nsfw: "ちょっと見せられへんわ" | ||||
| mobile/views/components/media-image.vue: | ||||
|   sensitive: "閲覧注意" | ||||
|   click-to-show: "クリックして表示" | ||||
|   sensitive: "見たらあかんで" | ||||
|   click-to-show: "押してみ、見せたるわ" | ||||
| mobile/views/components/media-video.vue: | ||||
|   sensitive: "閲覧注意" | ||||
|   click-to-show: "クリックして表示" | ||||
|   sensitive: "ちょっと見せられへんわ" | ||||
|   click-to-show: "押してみ、見せたるわ" | ||||
| mobile/views/components/follow-button.vue: | ||||
|   following: "フォロー中" | ||||
|   following: "フォローしとる" | ||||
|   follow: "フォロー" | ||||
|   request-pending: "フォロー許可待ち" | ||||
|   follow-request: "フォロー申請" | ||||
|   request-pending: "フォローの許し待っとる" | ||||
|   follow-request: "フォロー許してくれや!言うてみる" | ||||
| mobile/views/components/friends-maker.vue: | ||||
|   title: "気になるユーザーをフォロー" | ||||
|   empty: "おすすめのユーザーは見つかりませんでした。" | ||||
|   fetching: "読み込んでいます" | ||||
|   refresh: "もっと見る" | ||||
|   close: "閉じる" | ||||
|   title: "おもろそうやな" | ||||
|   empty: "おすすめのユーザーはおらん。" | ||||
|   fetching: "読みこんどるで…" | ||||
|   refresh: "もっとあるやろ!" | ||||
|   close: "さいなら" | ||||
| mobile/views/components/note.vue: | ||||
|   reposted-by: "{}がRenote" | ||||
|   private: "この投稿は非公開です" | ||||
|   deleted: "この投稿は削除されました" | ||||
|   location: "位置情報" | ||||
|   private: "この投稿は見せられへんわ" | ||||
|   deleted: "この投稿なんか無くなってもうたわ" | ||||
|   location: "ここおるで:" | ||||
| mobile/views/components/note-detail.vue: | ||||
|   reply: "返信" | ||||
|   reply: "返す" | ||||
|   reaction: "リアクション" | ||||
|   reposted-by: "{}がRenote" | ||||
|   private: "この投稿は非公開です" | ||||
|   deleted: "この投稿は削除されました" | ||||
|   location: "位置情報" | ||||
|   private: "この投稿は見せられへんわ" | ||||
|   deleted: "この投稿なんか無くなってもうたわ" | ||||
|   location: "ここおるで:" | ||||
| mobile/views/components/note-preview.vue: | ||||
|   admin: "admin" | ||||
|   bot: "bot" | ||||
| @@ -1072,55 +1072,55 @@ mobile/views/components/note-sub.vue: | ||||
|   bot: "bot" | ||||
|   cat: "cat" | ||||
| mobile/views/components/notes.vue: | ||||
|   failed: "読み込みに失敗しました。" | ||||
|   retry: "リトライ" | ||||
|   failed: "あかん、読み込めへんわ" | ||||
|   retry: "もっぺん" | ||||
| mobile/views/components/notifications.vue: | ||||
|   more: "もっと見る" | ||||
|   empty: "ありません!" | ||||
|   more: "もっとあるやろ!" | ||||
|   empty: "あらへん!" | ||||
| mobile/views/components/post-form.vue: | ||||
|   add-visible-user: "ユーザーを追加" | ||||
|   add-visible-user: "ユーザー増やす" | ||||
|   submit: "投稿" | ||||
|   reply: "返信" | ||||
|   reply: "返す" | ||||
|   renote: "Renote" | ||||
|   quote-placeholder: "この投稿を引用... (オプション)" | ||||
|   quote-placeholder: "この投稿を持ってくる(オプション)" | ||||
|   reply-placeholder: "この投稿への返信..." | ||||
|   cw-placeholder: "内容への注釈 (オプション)" | ||||
|   location-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。" | ||||
|   error: "エラー" | ||||
|   username-prompt: "ユーザー名を入力してや" | ||||
| mobile/views/components/sub-note-content.vue: | ||||
|   private: "この投稿は非公開です" | ||||
|   deleted: "この投稿は削除されました" | ||||
|   private: "この投稿は見せられへんわ" | ||||
|   deleted: "この投稿なんか無くなってもうたわ" | ||||
|   media-count: "{}つのメディア" | ||||
|   poll: "アンケート" | ||||
| mobile/views/components/timeline.vue: | ||||
|   empty: "投稿がありません" | ||||
|   empty: "投稿はあらへん" | ||||
|   load-more: "もっと" | ||||
| mobile/views/components/ui.header.vue: | ||||
|   welcome-back: "おかえりなさい、" | ||||
|   adjective: "さん" | ||||
|   welcome-back: "おかえり、" | ||||
|   adjective: "はん" | ||||
| mobile/views/components/ui.nav.vue: | ||||
|   timeline: "タイムライン" | ||||
|   notifications: "通知" | ||||
|   messaging: "メッセージ" | ||||
|   follow-requests: "フォロー申請" | ||||
|   follow-requests: "フォロー許してくれや!言うてみる" | ||||
|   search: "検索" | ||||
|   drive: "ドライブ" | ||||
|   favorites: "お気に入り" | ||||
|   user-lists: "リスト" | ||||
|   widgets: "ウィジェット" | ||||
|   game: "ゲーム" | ||||
|   darkmode: "ダークモード" | ||||
|   darkmode: "ナイトゲームや" | ||||
|   settings: "設定" | ||||
|   admin: "管理" | ||||
|   about: "Misskeyについて" | ||||
|   about: "Misskeyってなんや?" | ||||
| mobile/views/components/user-timeline.vue: | ||||
|   no-notes: "このユーザーは投稿していないようです。" | ||||
|   no-notes-with-media: "メディア付き投稿はありません。" | ||||
|   no-notes: "このユーザーは投稿しとらんようや。" | ||||
|   no-notes-with-media: "メディア付き投稿はあらへん。" | ||||
|   load-more: "もっと" | ||||
| mobile/views/components/users-list.vue: | ||||
|   all: "すべて" | ||||
|   known: "知り合い" | ||||
|   known: "知っとる" | ||||
|   load-more: "もっと" | ||||
| mobile/views/pages/favorites.vue: | ||||
|   title: "お気に入り" | ||||
| @@ -1129,9 +1129,9 @@ mobile/views/pages/user-lists.vue: | ||||
|   enter-list-name: "リスト名を入力してや" | ||||
| mobile/views/pages/drive.vue: | ||||
|   drive: "ドライブ" | ||||
|   more: "もっと見る" | ||||
|   more: "もっとあるやろ!" | ||||
| mobile/views/pages/signup.vue: | ||||
|   lets-start: "📦 始めましょう" | ||||
|   lets-start: "📦 始めようや" | ||||
| mobile/views/pages/followers.vue: | ||||
|   followers-of: "{}のフォロワー" | ||||
| mobile/views/pages/following.vue: | ||||
| @@ -1141,7 +1141,7 @@ mobile/views/pages/home.vue: | ||||
|   local: "ローカル" | ||||
|   hybrid: "ソーシャル" | ||||
|   global: "グローバル" | ||||
|   mentions: "あなた宛て" | ||||
|   mentions: "あんた宛て" | ||||
|   messages: "メッセージ" | ||||
| mobile/views/pages/tag.vue: | ||||
|   no-posts-found: "ハッシュタグ「{}」が付けられた投稿はあらへんで。" | ||||
| @@ -1149,28 +1149,28 @@ mobile/views/pages/welcome.vue: | ||||
|   signup: "新規登録" | ||||
| mobile/views/pages/widgets.vue: | ||||
|   dashboard: "ダッシュボード" | ||||
|   widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" | ||||
|   add-widget: "追加" | ||||
|   widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできんで。ウィジェットを移動するんやったら「三」をドラッグしてや。ウィジェットを削除するんやったら「x」をタップしてや。いくつかのウィジェットはタップしたったら表示を変更できるかも分からん、知らんけど。" | ||||
|   add-widget: "増やす" | ||||
|   customization-tips: "カスタマイズのヒント" | ||||
| mobile/views/pages/widgets/activity.vue: | ||||
|   activity: "アクティビティ" | ||||
|   activity: "やっとること" | ||||
| mobile/views/pages/share.vue: | ||||
|   share-with: "{}で共有" | ||||
|   share-with: "{}で「わけわけ」" | ||||
| mobile/views/pages/messaging.vue: | ||||
|   messaging: "メッセージ" | ||||
| mobile/views/pages/messaging-room.vue: | ||||
|   messaging: "メッセージ" | ||||
| mobile/views/pages/received-follow-requests.vue: | ||||
|   title: "フォロー申請" | ||||
|   accept: "承認" | ||||
|   reject: "拒否" | ||||
|   title: "フォロー許してくれや!" | ||||
|   accept: "許す" | ||||
|   reject: "許さん" | ||||
| mobile/views/pages/note.vue: | ||||
|   title: "投稿" | ||||
|   prev: "前の投稿" | ||||
|   next: "次の投稿" | ||||
|   prev: "前のやつ" | ||||
|   next: "次のやつ" | ||||
| mobile/views/pages/notifications.vue: | ||||
|   notifications: "通知" | ||||
|   read-all: "すべての通知を既読にしますか?" | ||||
|   read-all: "通知全部読んだか?" | ||||
| mobile/views/pages/games/reversi.vue: | ||||
|   reversi: "リバーシ" | ||||
| mobile/views/pages/settings/settings.profile.vue: | ||||
| @@ -1178,12 +1178,12 @@ mobile/views/pages/settings/settings.profile.vue: | ||||
|   name: "名前" | ||||
|   account: "アカウント" | ||||
|   location: "場所" | ||||
|   description: "自己紹介" | ||||
|   description: "ワイのこと" | ||||
|   birthday: "誕生日" | ||||
|   avatar: "アイコン" | ||||
|   banner: "バナー" | ||||
|   is-cat: "このアカウントはCatです" | ||||
|   is-locked: "フォローを承認制にする" | ||||
|   is-cat: "このアカウントはCatや" | ||||
|   is-locked: "他人のフォローは許してからや!" | ||||
|   advanced: "その他" | ||||
|   privacy: "プライバシー" | ||||
|   save: "保存" | ||||
|   | ||||
							
								
								
									
										20
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,8 +1,8 @@ | ||||
| { | ||||
| 	"name": "misskey", | ||||
| 	"author": "syuilo <i@syuilo.com>", | ||||
| 	"version": "8.54.0", | ||||
| 	"clientVersion": "1.0.9905", | ||||
| 	"version": "9.2.0", | ||||
| 	"clientVersion": "1.0.10062", | ||||
| 	"codename": "nighthike", | ||||
| 	"main": "./built/index.js", | ||||
| 	"private": true, | ||||
| @@ -27,7 +27,7 @@ | ||||
| 		"@koa/cors": "2.2.2", | ||||
| 		"@prezzemolo/rap": "0.1.2", | ||||
| 		"@prezzemolo/zip": "0.0.3", | ||||
| 		"@types/bcryptjs": "2.4.1", | ||||
| 		"@types/bcryptjs": "2.4.2", | ||||
| 		"@types/dateformat": "1.0.1", | ||||
| 		"@types/debug": "0.0.30", | ||||
| 		"@types/deep-equal": "1.0.1", | ||||
| @@ -51,7 +51,7 @@ | ||||
| 		"@types/koa-logger": "3.1.0", | ||||
| 		"@types/koa-mount": "3.0.1", | ||||
| 		"@types/koa-multer": "1.0.0", | ||||
| 		"@types/koa-router": "7.0.31", | ||||
| 		"@types/koa-router": "7.0.32", | ||||
| 		"@types/koa-send": "4.1.1", | ||||
| 		"@types/koa-views": "2.0.3", | ||||
| 		"@types/koa__cors": "2.2.3", | ||||
| @@ -60,7 +60,7 @@ | ||||
| 		"@types/mocha": "5.2.3", | ||||
| 		"@types/mongodb": "3.1.7", | ||||
| 		"@types/ms": "0.7.30", | ||||
| 		"@types/node": "10.10.1", | ||||
| 		"@types/node": "10.10.3", | ||||
| 		"@types/portscanner": "2.1.0", | ||||
| 		"@types/pug": "2.0.4", | ||||
| 		"@types/qrcode": "1.2.0", | ||||
| @@ -75,9 +75,10 @@ | ||||
| 		"@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.11", | ||||
| 		"@types/webpack": "4.4.12", | ||||
| 		"@types/webpack-stream": "3.2.10", | ||||
| 		"@types/websocket": "0.0.40", | ||||
| 		"@types/ws": "6.0.1", | ||||
| @@ -133,6 +134,8 @@ | ||||
| 		"is-url": "1.2.4", | ||||
| 		"js-yaml": "3.12.0", | ||||
| 		"jsdom": "11.12.0", | ||||
| 		"json5": "2.1.0", | ||||
| 		"json5-loader": "1.0.1", | ||||
| 		"koa": "2.5.1", | ||||
| 		"koa-bodyparser": "4.2.1", | ||||
| 		"koa-compress": "3.0.0", | ||||
| @@ -194,6 +197,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 +210,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", | ||||
| @@ -221,7 +227,7 @@ | ||||
| 		"webfinger.js": "2.6.6", | ||||
| 		"webpack": "4.19.1", | ||||
| 		"webpack-cli": "3.1.0", | ||||
| 		"websocket": "1.0.26", | ||||
| 		"websocket": "1.0.28", | ||||
| 		"ws": "6.0.0", | ||||
| 		"xev": "2.0.1" | ||||
| 	}, | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -1,3 +1,32 @@ | ||||
| <template> | ||||
| <router-view id="app"></router-view> | ||||
| <router-view id="app" v-hotkey.global="keymap"></router-view> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| import Vue from 'vue'; | ||||
| import { url, lang } from './config'; | ||||
|  | ||||
| export default Vue.extend({ | ||||
| 	computed: { | ||||
| 		keymap(): any { | ||||
| 			return { | ||||
| 				'h|slash': this.help, | ||||
| 				'd': this.dark | ||||
| 			}; | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
| 		help() { | ||||
| 			window.open(`${url}/docs/${lang}/keyboard-shortcut`, '_blank'); | ||||
| 		}, | ||||
|  | ||||
| 		dark() { | ||||
| 			this.$store.commit('device/set', { | ||||
| 				key: 'darkmode', | ||||
| 				value: !this.$store.state.device.darkmode | ||||
| 			}); | ||||
| 		} | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
|   | ||||
| @@ -20,6 +20,15 @@ | ||||
|  | ||||
| 	const langs = LANGS; | ||||
|  | ||||
| 	//#region Apply theme | ||||
| 	const theme = localStorage.getItem('theme'); | ||||
| 	if (theme) { | ||||
| 		Object.entries(JSON.parse(theme)).forEach(([k, v]) => { | ||||
| 			document.documentElement.style.setProperty(`--${k}`, v.toString()); | ||||
| 		}); | ||||
| 	} | ||||
| 	//#endregion | ||||
|  | ||||
| 	//#region Load settings | ||||
| 	let settings = null; | ||||
| 	const vuex = localStorage.getItem('vuex'); | ||||
| @@ -84,13 +93,6 @@ | ||||
| 		app = isMobile ? 'mobile' : 'desktop'; | ||||
| 	} | ||||
|  | ||||
| 	// Dark/Light | ||||
| 	if (settings) { | ||||
| 		if (settings.device.darkmode) { | ||||
| 			document.documentElement.setAttribute('data-darkmode', 'true'); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Script version | ||||
| 	const ver = localStorage.getItem('v') || VERSION; | ||||
|  | ||||
|   | ||||
| @@ -59,7 +59,7 @@ export default { | ||||
|  | ||||
| 				el.dataset.reservedKeys = reservedKeys.map(key => `'${key}'`).join(' '); | ||||
|  | ||||
| 				el._keyHandler = e => { | ||||
| 				el._keyHandler = (e: KeyboardEvent) => { | ||||
| 					const key = e.code.toLowerCase(); | ||||
|  | ||||
| 					const targetReservedKeys = document.activeElement ? ((document.activeElement as any).dataset || {}).reservedKeys || '' : ''; | ||||
| @@ -72,7 +72,8 @@ export default { | ||||
| 							const matched = pattern.which.includes(key) && | ||||
| 								pattern.ctrl == e.ctrlKey && | ||||
| 								pattern.shift == e.shiftKey && | ||||
| 								pattern.alt == e.altKey; | ||||
| 								pattern.alt == e.altKey && | ||||
| 								e.metaKey == false; | ||||
|  | ||||
| 							if (matched) { | ||||
| 								e.preventDefault(); | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| require('fuckadblock'); | ||||
|  | ||||
| declare const fuckAdBlock: any; | ||||
|  | ||||
| export default (os) => { | ||||
| 	require('fuckadblock'); | ||||
|  | ||||
| 	function adBlockDetected() { | ||||
| 		os.apis.dialog({ | ||||
| 			title: '%fa:exclamation-triangle%%i18n:common.adblock.detected%', | ||||
|   | ||||
| @@ -50,6 +50,30 @@ export class HomeStream extends Stream { | ||||
| 			}); | ||||
| 		}); | ||||
|  | ||||
| 		this.on('unreadMention', () => { | ||||
| 			os.store.dispatch('mergeMe', { | ||||
| 				hasUnreadMentions: true | ||||
| 			}); | ||||
| 		}); | ||||
|  | ||||
| 		this.on('readAllUnreadMentions', () => { | ||||
| 			os.store.dispatch('mergeMe', { | ||||
| 				hasUnreadMentions: false | ||||
| 			}); | ||||
| 		}); | ||||
|  | ||||
| 		this.on('unreadSpecifiedNote', () => { | ||||
| 			os.store.dispatch('mergeMe', { | ||||
| 				hasUnreadSpecifiedNotes: true | ||||
| 			}); | ||||
| 		}); | ||||
|  | ||||
| 		this.on('readAllUnreadSpecifiedNotes', () => { | ||||
| 			os.store.dispatch('mergeMe', { | ||||
| 				hasUnreadSpecifiedNotes: false | ||||
| 			}); | ||||
| 		}); | ||||
|  | ||||
| 		this.on('clientSettingUpdated', x => { | ||||
| 			os.store.commit('settings/set', { | ||||
| 				key: x.key, | ||||
|   | ||||
| @@ -259,15 +259,13 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-autocomplete | ||||
| 	position fixed | ||||
| 	z-index 65535 | ||||
| 	max-width 100% | ||||
| 	margin-top calc(1em + 8px) | ||||
| 	overflow hidden | ||||
| 	background isDark ? #313543 : #fff | ||||
| 	background var(--faceHeader) | ||||
| 	border solid 1px rgba(#000, 0.1) | ||||
| 	border-radius 4px | ||||
| 	transition top 0.1s ease, left 0.1s ease | ||||
| @@ -299,16 +297,16 @@ root(isDark) | ||||
| 				text-overflow ellipsis | ||||
|  | ||||
| 			&:hover | ||||
| 				background isDark ? rgba(#fff, 0.1) : rgba(#000, 0.1) | ||||
| 				background var(--autocompleteItemHoverBg) | ||||
|  | ||||
| 			&[data-selected='true'] | ||||
| 				background $theme-color | ||||
| 				background var(--primary) | ||||
|  | ||||
| 				&, * | ||||
| 					color #fff !important | ||||
|  | ||||
| 			&:active | ||||
| 				background darken($theme-color, 10%) | ||||
| 				background var(--primaryDarken10) | ||||
|  | ||||
| 				&, * | ||||
| 					color #fff !important | ||||
| @@ -325,15 +323,15 @@ root(isDark) | ||||
|  | ||||
| 		.name | ||||
| 			margin 0 8px 0 0 | ||||
| 			color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8) | ||||
| 			color var(--autocompleteItemText) | ||||
|  | ||||
| 		.username | ||||
| 			color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3) | ||||
| 			color var(--autocompleteItemTextSub) | ||||
|  | ||||
| 	> .hashtags > li | ||||
|  | ||||
| 		.name | ||||
| 			color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8) | ||||
| 			color var(--autocompleteItemText) | ||||
|  | ||||
| 	> .emojis > li | ||||
|  | ||||
| @@ -343,15 +341,9 @@ root(isDark) | ||||
| 			width 24px | ||||
|  | ||||
| 		.name | ||||
| 			color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8) | ||||
| 			color var(--autocompleteItemText) | ||||
|  | ||||
| 		.alias | ||||
| 			margin 0 0 0 8px | ||||
| 			color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3) | ||||
|  | ||||
| .mk-autocomplete[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-autocomplete:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 			color var(--autocompleteItemTextSub) | ||||
| </style> | ||||
|   | ||||
| @@ -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({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
|  | ||||
| root(isDark) | ||||
| .mk-avatar | ||||
| 	display inline-block | ||||
| 	vertical-align bottom | ||||
|  | ||||
| @@ -79,7 +83,7 @@ root(isDark) | ||||
| 	&.cat::before, | ||||
| 	&.cat::after | ||||
| 		background #df548f | ||||
| 		border solid 4px isDark ? #e0eefd : #202224 | ||||
| 		border solid 4px currentColor | ||||
| 		box-sizing border-box | ||||
| 		content '' | ||||
| 		display inline-block | ||||
| @@ -105,9 +109,4 @@ root(isDark) | ||||
| 		transition border-radius 1s ease | ||||
| 		z-index 1 | ||||
|  | ||||
| .mk-avatar[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-avatar:not([data-darkmode]) | ||||
| 	root(false) | ||||
| </style> | ||||
|   | ||||
| @@ -39,7 +39,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .mk-connect-failed | ||||
| 	width 100% | ||||
| @@ -70,17 +70,17 @@ export default Vue.extend({ | ||||
| 		display block | ||||
| 		margin 1em auto 0 auto | ||||
| 		padding 8px 10px | ||||
| 		color $theme-color-foreground | ||||
| 		background $theme-color | ||||
| 		color var(--primaryForeground) | ||||
| 		background var(--primary) | ||||
|  | ||||
| 		&:focus | ||||
| 			outline solid 3px rgba($theme-color, 0.3) | ||||
| 			outline solid 3px var(--primaryAlpha03) | ||||
|  | ||||
| 		&:hover | ||||
| 			background lighten($theme-color, 10%) | ||||
| 			background var(--primaryLighten10) | ||||
|  | ||||
| 		&:active | ||||
| 			background darken($theme-color, 10%) | ||||
| 			background var(--primaryDarken10) | ||||
|  | ||||
| 	> .thanks | ||||
| 		display block | ||||
|   | ||||
| @@ -22,23 +22,17 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .nrvgflfuaxwgkxoynpnumyookecqrrvh | ||||
| 	display inline-block | ||||
| 	padding 4px 8px | ||||
| 	font-size 0.7em | ||||
| 	color isDark ? #393f4f : #fff | ||||
| 	background isDark ? #687390 : #b1b9c1 | ||||
| 	color var(--cwButtonFg) | ||||
| 	background var(--cwButtonBg) | ||||
| 	border-radius 2px | ||||
| 	cursor pointer | ||||
| 	user-select none | ||||
|  | ||||
| 	&:hover | ||||
| 		background isDark ? #707b97 : #bbc4ce | ||||
|  | ||||
| .nrvgflfuaxwgkxoynpnumyookecqrrvh[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .nrvgflfuaxwgkxoynpnumyookecqrrvh:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 		background var(--cwButtonHoverBg) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| </template> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .a | ||||
| 	display block | ||||
| @@ -18,8 +18,8 @@ | ||||
| 		display block | ||||
| 		//fill #151513 | ||||
| 		//color #fff | ||||
| 		fill $theme-color | ||||
| 		color $theme-color-foreground | ||||
| 		fill var(--primary) | ||||
| 		color var(--primaryForeground) | ||||
|  | ||||
| 		.octo-arm | ||||
| 			transform-origin 130px 106px | ||||
|   | ||||
| @@ -304,9 +304,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .xqnhankfuuilcwvhgsopeqncafzsquya | ||||
| 	text-align center | ||||
|  | ||||
| 	> .go-index | ||||
| @@ -319,7 +317,7 @@ root(isDark) | ||||
|  | ||||
| 	> header | ||||
| 		padding 8px | ||||
| 		border-bottom dashed 1px isDark ? #4c5761 : #c4cdd4 | ||||
| 		border-bottom dashed 1px var(--reversiGameHeaderLine) | ||||
|  | ||||
| 		a | ||||
| 			color inherit | ||||
| @@ -386,30 +384,30 @@ root(isDark) | ||||
| 						user-select none | ||||
|  | ||||
| 					&.empty | ||||
| 						border solid 2px isDark ? #51595f : #eee | ||||
| 						border solid 2px var(--reversiGameEmptyCell) | ||||
|  | ||||
| 					&.empty.can | ||||
| 						background isDark ? #51595f : #eee | ||||
| 						background var(--reversiGameEmptyCell) | ||||
|  | ||||
| 					&.empty.myTurn | ||||
| 						border-color isDark ? #6a767f : #ddd | ||||
| 						border-color var(--reversiGameEmptyCellMyTurn) | ||||
|  | ||||
| 						&.can | ||||
| 							background isDark ? #51595f : #eee | ||||
| 							background var(--reversiGameEmptyCellCanPut) | ||||
| 							cursor pointer | ||||
|  | ||||
| 							&:hover | ||||
| 								border-color darken($theme-color, 10%) | ||||
| 								background $theme-color | ||||
| 								border-color var(--primaryDarken10) | ||||
| 								background var(--primary) | ||||
|  | ||||
| 							&:active | ||||
| 								background darken($theme-color, 10%) | ||||
| 								background var(--primaryDarken10) | ||||
|  | ||||
| 					&.prev | ||||
| 						box-shadow 0 0 0 4px rgba($theme-color, 0.7) | ||||
| 						box-shadow 0 0 0 4px var(--primaryAlpha07) | ||||
|  | ||||
| 					&.isEnded | ||||
| 						border-color isDark ? #6a767f : #ddd | ||||
| 						border-color var(--reversiGameEmptyCellMyTurn) | ||||
|  | ||||
| 					&.none | ||||
| 						border-color transparent !important | ||||
| @@ -458,10 +456,4 @@ root(isDark) | ||||
| 			margin 0 8px | ||||
| 			min-width 70px | ||||
|  | ||||
| .xqnhankfuuilcwvhgsopeqncafzsquya[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .xqnhankfuuilcwvhgsopeqncafzsquya:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -138,9 +138,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .phgnkghfpyvkrvwiajkiuoxyrdaqpzcx | ||||
| 	> h1 | ||||
| 		margin 0 | ||||
| 		padding 24px | ||||
| @@ -148,7 +146,7 @@ root(isDark) | ||||
| 		text-align center | ||||
| 		font-weight normal | ||||
| 		color #fff | ||||
| 		background linear-gradient(to bottom, isDark ? #45730e : #8bca3e, isDark ? #464300 : #d6cf31) | ||||
| 		background linear-gradient(to bottom, var(--reversiBannerGradientStart), var(--reversiBannerGradientEnd)) | ||||
|  | ||||
| 		& + p | ||||
| 			margin 0 | ||||
| @@ -156,7 +154,7 @@ root(isDark) | ||||
| 			margin-bottom 12px | ||||
| 			text-align center | ||||
| 			font-size 14px | ||||
| 			border-bottom solid 1px isDark ? #535f65 : #d3d9dc | ||||
| 			border-bottom solid 1px var(--faceDivider) | ||||
|  | ||||
| 	> .play | ||||
| 		margin 0 auto | ||||
| @@ -171,14 +169,14 @@ root(isDark) | ||||
| 				padding 16px | ||||
| 				font-size 14px | ||||
| 				text-align left | ||||
| 				background isDark ? #282c37 : #f5f5f5 | ||||
| 				background var(--reversiDescBg) | ||||
| 				border-radius 8px | ||||
|  | ||||
| 	> section | ||||
| 		margin 0 auto | ||||
| 		padding 0 16px 16px 16px | ||||
| 		max-width 500px | ||||
| 		border-top solid 1px isDark ? #535f65 : #d3d9dc | ||||
| 		border-top solid 1px var(--faceDivider) | ||||
|  | ||||
| 		> h2 | ||||
| 			margin 0 | ||||
| @@ -189,9 +187,9 @@ root(isDark) | ||||
| 	.invitation | ||||
| 		margin 8px 0 | ||||
| 		padding 8px | ||||
| 		color isDark ? #fff : #677f84 | ||||
| 		background isDark ? #282c37 : #fff | ||||
| 		box-shadow 0 2px 16px rgba(#000, isDark ? 0.7 : 0.15) | ||||
| 		color var(--text) | ||||
| 		background var(--face) | ||||
| 		box-shadow 0 2px 16px var(--reversiListItemShadow) | ||||
| 		border-radius 6px | ||||
| 		cursor pointer | ||||
|  | ||||
| @@ -200,13 +198,13 @@ root(isDark) | ||||
| 			user-select none | ||||
|  | ||||
| 		&:focus | ||||
| 			border-color $theme-color | ||||
| 			border-color var(--primary) | ||||
|  | ||||
| 		&:hover | ||||
| 			background isDark ? #313543 : #f5f5f5 | ||||
| 			box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.05) | ||||
|  | ||||
| 		&:active | ||||
| 			background isDark ? #1e222b : #eee | ||||
| 			box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.1) | ||||
|  | ||||
| 		> .avatar | ||||
| 			width 32px | ||||
| @@ -221,9 +219,9 @@ root(isDark) | ||||
| 		display block | ||||
| 		margin 8px 0 | ||||
| 		padding 8px | ||||
| 		color isDark ? #fff : #677f84 | ||||
| 		background isDark ? #282c37 : #fff | ||||
| 		box-shadow 0 2px 16px rgba(#000, isDark ? 0.7 : 0.15) | ||||
| 		color var(--text) | ||||
| 		background var(--face) | ||||
| 		box-shadow 0 2px 16px var(--reversiListItemShadow) | ||||
| 		border-radius 6px | ||||
| 		cursor pointer | ||||
|  | ||||
| @@ -232,10 +230,10 @@ root(isDark) | ||||
| 			user-select none | ||||
|  | ||||
| 		&:hover | ||||
| 			background isDark ? #313543 : #f5f5f5 | ||||
| 			box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.05) | ||||
|  | ||||
| 		&:active | ||||
| 			background isDark ? #1e222b : #eee | ||||
| 			box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.1) | ||||
|  | ||||
| 		> .avatar | ||||
| 			width 32px | ||||
| @@ -246,10 +244,4 @@ root(isDark) | ||||
| 			margin 0 8px | ||||
| 			line-height 32px | ||||
|  | ||||
| .phgnkghfpyvkrvwiajkiuoxyrdaqpzcx[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .phgnkghfpyvkrvwiajkiuoxyrdaqpzcx:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -47,9 +47,9 @@ | ||||
| 			</header> | ||||
|  | ||||
| 			<div> | ||||
| 				<mk-switch v-model="game.settings.isLlotheo" @change="updateSettings" text="%i18n:@is-llotheo%"/> | ||||
| 				<mk-switch v-model="game.settings.loopedBoard" @change="updateSettings" text="%i18n:@looped-map%"/> | ||||
| 				<mk-switch v-model="game.settings.canPutEverywhere" @change="updateSettings" text="%i18n:@can-put-everywhere%"/> | ||||
| 				<ui-switch v-model="game.settings.isLlotheo" @change="updateSettings">%i18n:@is-llotheo%</ui-switch> | ||||
| 				<ui-switch v-model="game.settings.loopedBoard" @change="updateSettings">%i18n:@looped-map%</ui-switch> | ||||
| 				<ui-switch v-model="game.settings.canPutEverywhere" @change="updateSettings">%i18n:@can-put-everywhere%</ui-switch> | ||||
| 			</div> | ||||
| 		</div> | ||||
|  | ||||
| @@ -60,7 +60,7 @@ | ||||
|  | ||||
| 			<div> | ||||
| 				<template v-for="item in form"> | ||||
| 					<mk-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm(item)">{{ item.desc || '' }}</mk-switch> | ||||
| 					<ui-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm(item)">{{ item.desc || '' }}</ui-switch> | ||||
|  | ||||
| 					<div class="card" v-if="item.type == 'radio'" :key="item.id"> | ||||
| 						<header> | ||||
| @@ -252,11 +252,9 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .urbixznjwwuukfsckrwzwsqzsxornqij | ||||
| 	text-align center | ||||
| 	background isDark ? #191b22 : #f9f9f9 | ||||
| 	background var(--bg) | ||||
|  | ||||
| 	> header | ||||
| 		padding 8px | ||||
| @@ -273,10 +271,10 @@ root(isDark) | ||||
| 					> select | ||||
| 						width 100% | ||||
| 						padding 12px 14px | ||||
| 						background isDark ? #282C37 : #fff | ||||
| 						border 1px solid isDark ? #6a707d : #dcdfe6 | ||||
| 						background var(--face) | ||||
| 						border 1px solid var(--reversiMapSelectBorder) | ||||
| 						border-radius 4px | ||||
| 						color isDark ? #fff : #606266 | ||||
| 						color var(--text) | ||||
| 						cursor pointer | ||||
| 						transition border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) | ||||
| 						-webkit-appearance none | ||||
| @@ -284,17 +282,18 @@ root(isDark) | ||||
| 						appearance none | ||||
|  | ||||
| 						&:hover | ||||
| 							border-color isDark ? #a7aebd : #c0c4cc | ||||
| 							border-color var(--reversiMapSelectHoverBorder) | ||||
|  | ||||
| 						&:focus | ||||
| 						&:active | ||||
| 							border-color $theme-color | ||||
| 							border-color var(--primary) | ||||
|  | ||||
| 				> div | ||||
| 					> .random | ||||
| 						padding 32px 0 | ||||
| 						font-size 64px | ||||
| 						color isDark ? #4e5961 : #d8d8d8 | ||||
| 						color var(--text) | ||||
| 						opacity 0.7 | ||||
|  | ||||
| 					> .board | ||||
| 						display grid | ||||
| @@ -302,11 +301,11 @@ root(isDark) | ||||
| 						width 300px | ||||
| 						height 300px | ||||
| 						margin 0 auto | ||||
| 						color isDark ? #fff : #444 | ||||
| 						color var(--text) | ||||
|  | ||||
| 						> div | ||||
| 							background transparent | ||||
| 							border solid 2px isDark ? #6a767f : #ddd | ||||
| 							border solid 2px var(--faceDivider) | ||||
| 							border-radius 6px | ||||
| 							overflow hidden | ||||
| 							cursor pointer | ||||
| @@ -331,32 +330,26 @@ root(isDark) | ||||
| 		.card | ||||
| 			max-width 400px | ||||
| 			border-radius 4px | ||||
| 			background isDark ? #282C37 : #fff | ||||
| 			color isDark ? #fff : #303133 | ||||
| 			box-shadow 0 2px 12px 0 rgba(#000, isDark ? 0.7 : 0.1) | ||||
| 			background var(--face) | ||||
| 			color var(--text) | ||||
| 			box-shadow 0 2px 12px 0 var(--reversiRoomFormShadow) | ||||
|  | ||||
| 			> header | ||||
| 				padding 18px 20px | ||||
| 				border-bottom 1px solid isDark ? #1c2023 : #ebeef5 | ||||
| 				border-bottom 1px solid var(--faceDivider) | ||||
|  | ||||
| 			> div | ||||
| 				padding 20px | ||||
| 				color isDark ? #fff : #606266 | ||||
| 				color var(--text) | ||||
|  | ||||
| 	> footer | ||||
| 		position sticky | ||||
| 		bottom 0 | ||||
| 		padding 16px | ||||
| 		background rgba(isDark ? #191b22 : #fff, 0.9) | ||||
| 		border-top solid 1px isDark ? #606266 : #c4cdd4 | ||||
| 		background var(--reversiRoomFooterBg) | ||||
| 		border-top solid 1px var(--faceDivider) | ||||
|  | ||||
| 		> .status | ||||
| 			margin 0 0 16px 0 | ||||
|  | ||||
| .urbixznjwwuukfsckrwzwsqzsxornqij[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .urbixznjwwuukfsckrwzwsqzsxornqij:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -156,11 +156,9 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| 	color isDark ? #fff : #677f84 | ||||
| 	background isDark ? #191b22 : #fff | ||||
| .vchtoekanapleubgzioubdtmlkribzfd | ||||
| 	color var(--text) | ||||
| 	background var(--bg) | ||||
|  | ||||
| 	> .matching | ||||
| 		> h1 | ||||
| @@ -177,10 +175,4 @@ root(isDark) | ||||
| 			text-align center | ||||
| 			border-top dashed 1px #c4cdd4 | ||||
|  | ||||
| .vchtoekanapleubgzioubdtmlkribzfd[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .vchtoekanapleubgzioubdtmlkribzfd:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -26,7 +26,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .mk-google | ||||
| 	display flex | ||||
| 	margin 8px 0 | ||||
|  | ||||
| @@ -37,31 +37,25 @@ root(isDark) | ||||
| 		height 40px | ||||
| 		font-family sans-serif | ||||
| 		font-size 16px | ||||
| 		color isDark ? #dee4e8 : #55595c | ||||
| 		background isDark ? #191b22 : #fff | ||||
| 		border solid 1px isDark ? #495156 : #dadada | ||||
| 		color var(--googleSearchFg) | ||||
| 		background var(--googleSearchBg) | ||||
| 		border solid 1px var(--googleSearchBorder) | ||||
| 		border-radius 4px 0 0 4px | ||||
|  | ||||
| 		&:hover | ||||
| 			border-color isDark ? #777c86 : #b0b0b0 | ||||
| 			border-color var(--googleSearchHoverBorder) | ||||
|  | ||||
| 	> button | ||||
| 		flex-shrink 0 | ||||
| 		padding 0 16px | ||||
| 		border solid 1px isDark ? #495156 : #dadada | ||||
| 		border solid 1px var(--googleSearchBorder) | ||||
| 		border-left none | ||||
| 		border-radius 0 4px 4px 0 | ||||
|  | ||||
| 		&:hover | ||||
| 			background-color isDark ? #2e3440 : #eee | ||||
| 			background-color var(--googleSearchHoverButton) | ||||
|  | ||||
| 		&:active | ||||
| 			box-shadow 0 2px 4px rgba(#000, 0.15) inset | ||||
|  | ||||
| .mk-google[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-google:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| import Vue from 'vue'; | ||||
|  | ||||
| import theme from './theme.vue'; | ||||
| import instance from './instance.vue'; | ||||
| import cwButton from './cw-button.vue'; | ||||
| import tagCloud from './tag-cloud.vue'; | ||||
| import trends from './trends.vue'; | ||||
| @@ -29,7 +31,6 @@ import messagingRoom from './messaging-room.vue'; | ||||
| import urlPreview from './url-preview.vue'; | ||||
| import twitterSetting from './twitter-setting.vue'; | ||||
| import fileTypeIcon from './file-type-icon.vue'; | ||||
| import Switch from './switch.vue'; | ||||
| import Reversi from './games/reversi/reversi.vue'; | ||||
| import welcomeTimeline from './welcome-timeline.vue'; | ||||
| import uiInput from './ui/input.vue'; | ||||
| @@ -43,6 +44,8 @@ import uiSelect from './ui/select.vue'; | ||||
| import formButton from './ui/form/button.vue'; | ||||
| import formRadio from './ui/form/radio.vue'; | ||||
|  | ||||
| Vue.component('mk-theme', theme); | ||||
| Vue.component('mk-instance', instance); | ||||
| Vue.component('mk-cw-button', cwButton); | ||||
| Vue.component('mk-tag-cloud', tagCloud); | ||||
| Vue.component('mk-trends', trends); | ||||
| @@ -72,7 +75,6 @@ Vue.component('mk-messaging-room', messagingRoom); | ||||
| Vue.component('mk-url-preview', urlPreview); | ||||
| Vue.component('mk-twitter-setting', twitterSetting); | ||||
| Vue.component('mk-file-type-icon', fileTypeIcon); | ||||
| Vue.component('mk-switch', Switch); | ||||
| Vue.component('mk-reversi', Reversi); | ||||
| Vue.component('mk-welcome-timeline', welcomeTimeline); | ||||
| Vue.component('ui-input', uiInput); | ||||
|   | ||||
							
								
								
									
										51
									
								
								src/client/app/common/views/components/instance.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/client/app/common/views/components/instance.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| <template> | ||||
| <div class="nhasjydimbopojusarffqjyktglcuxjy" v-if="meta"> | ||||
| 	<div class="banner" :style="{ backgroundImage: meta.bannerUrl ? `url(${meta.bannerUrl})` : null }"></div> | ||||
|  | ||||
| 	<h1>{{ meta.name }}</h1> | ||||
| 	<p v-html="meta.description || '%i18n:common.about%'"></p> | ||||
| 	<router-link to="/">%i18n:@start%</router-link> | ||||
| </div> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| import Vue from 'vue'; | ||||
|  | ||||
| export default Vue.extend({ | ||||
| 	data() { | ||||
| 		return { | ||||
| 			meta: null | ||||
| 		} | ||||
| 	}, | ||||
| 	created() { | ||||
| 		(this as any).os.getMeta().then(meta => { | ||||
| 			this.meta = meta; | ||||
| 		}); | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| .nhasjydimbopojusarffqjyktglcuxjy | ||||
| 	color var(--text) | ||||
| 	background var(--face) | ||||
| 	text-align center | ||||
|  | ||||
| 	> .banner | ||||
| 		height 100px | ||||
| 		background-position center | ||||
| 		background-size cover | ||||
|  | ||||
| 	> h1 | ||||
| 		margin 16px | ||||
| 		font-size 16px | ||||
|  | ||||
| 	> p | ||||
| 		margin 16px | ||||
| 		font-size 14px | ||||
|  | ||||
| 	> a | ||||
| 		display block | ||||
| 		padding-bottom 16px | ||||
|  | ||||
| </style> | ||||
| @@ -43,7 +43,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .mk-media-banner | ||||
| 	width 100% | ||||
| 	border-radius 4px | ||||
| 	margin-top 4px | ||||
| @@ -71,7 +71,7 @@ root(isDark) | ||||
| 			font-size 1.6em | ||||
|  | ||||
| 	> .download | ||||
| 		background isDark ? #21242d : #f7f7f7 | ||||
| 		background var(--noteAttachedFile) | ||||
|  | ||||
| 	> .sensitive | ||||
| 		background #111 | ||||
| @@ -82,9 +82,4 @@ root(isDark) | ||||
| 			display block | ||||
| 			width 100% | ||||
|  | ||||
| .mk-media-banner[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-media-banner:not([data-darkmode]) | ||||
| 	root(false) | ||||
| </style> | ||||
|   | ||||
| @@ -117,10 +117,8 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| 	$bg-color = isDark ? #2c303c : #fff | ||||
| .onchrpzrvnoruiaenfcqvccjfuupzzwv | ||||
| 	$bg-color = var(--popupBg) | ||||
| 	$border-color = rgba(27, 31, 35, 0.15) | ||||
|  | ||||
| 	position initial | ||||
| @@ -132,7 +130,7 @@ root(isDark) | ||||
| 		z-index 10000 | ||||
| 		width 100% | ||||
| 		height 100% | ||||
| 		background rgba(#000, isDark ? 0.5 : 0.1) | ||||
| 		background var(--modalBackdrop) | ||||
| 		opacity 0 | ||||
|  | ||||
| 	> .popover | ||||
| @@ -179,26 +177,20 @@ root(isDark) | ||||
| 			display block | ||||
| 			padding 8px 16px | ||||
| 			width 100% | ||||
| 			color isDark ? #d6dce2 : #111 | ||||
| 			color var(--popupFg) | ||||
|  | ||||
| 			&:hover | ||||
| 				color $theme-color-foreground | ||||
| 				background $theme-color | ||||
| 				color var(--primaryForeground) | ||||
| 				background var(--primary) | ||||
| 				text-decoration none | ||||
|  | ||||
| 			&:active | ||||
| 				color $theme-color-foreground | ||||
| 				background darken($theme-color, 10%) | ||||
| 				color var(--primaryForeground) | ||||
| 				background var(--primaryDarken10) | ||||
|  | ||||
| 		> div | ||||
| 			margin 8px 0 | ||||
| 			height 1px | ||||
| 			background isDark ? #1c2023 : #eee | ||||
|  | ||||
| .onchrpzrvnoruiaenfcqvccjfuupzzwv[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .onchrpzrvnoruiaenfcqvccjfuupzzwv:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 			background var(--faceDivider) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -195,9 +195,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-messaging-form | ||||
| 	> textarea | ||||
| 		cursor auto | ||||
| 		display block | ||||
| @@ -209,10 +207,10 @@ root(isDark) | ||||
| 		padding 8px | ||||
| 		resize none | ||||
| 		font-size 1em | ||||
| 		color isDark ? #fff : #000 | ||||
| 		color var(--inputText) | ||||
| 		outline none | ||||
| 		border none | ||||
| 		border-top solid 1px isDark ? #4b5056 : #eee | ||||
| 		border-top solid 1px var(--faceDivider) | ||||
| 		border-radius 0 | ||||
| 		box-shadow none | ||||
| 		background transparent | ||||
| @@ -234,10 +232,10 @@ root(isDark) | ||||
| 		transition color 0.1s ease | ||||
|  | ||||
| 		&:hover | ||||
| 			color $theme-color | ||||
| 			color var(--primary) | ||||
|  | ||||
| 		&:active | ||||
| 			color darken($theme-color, 10%) | ||||
| 			color var(--primaryDarken10) | ||||
| 			transition color 0s ease | ||||
|  | ||||
| 	.files | ||||
| @@ -293,19 +291,13 @@ root(isDark) | ||||
| 		transition color 0.1s ease | ||||
|  | ||||
| 		&:hover | ||||
| 			color $theme-color | ||||
| 			color var(--primary) | ||||
|  | ||||
| 		&:active | ||||
| 			color darken($theme-color, 10%) | ||||
| 			color var(--primaryDarken10) | ||||
| 			transition color 0s ease | ||||
|  | ||||
| 	input[type=file] | ||||
| 		display none | ||||
|  | ||||
| .mk-messaging-form[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-messaging-form:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -59,10 +59,8 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| 	$me-balloon-color = $theme-color | ||||
| .message | ||||
| 	$me-balloon-color = var(--primary) | ||||
|  | ||||
| 	padding 10px 12px 10px 12px | ||||
| 	background-color transparent | ||||
| @@ -179,7 +177,7 @@ root(isDark) | ||||
| 			display block | ||||
| 			margin 2px 0 0 0 | ||||
| 			font-size 10px | ||||
| 			color isDark ? rgba(#fff, 0.4) : rgba(#000, 0.4) | ||||
| 			color var(--messagingRoomMessageInfo) | ||||
|  | ||||
| 			> [data-fa] | ||||
| 				margin-left 4px | ||||
| @@ -192,7 +190,7 @@ root(isDark) | ||||
| 			padding-left 66px | ||||
|  | ||||
| 			> .balloon | ||||
| 				$color = isDark ? #2d3338 : #eee | ||||
| 				$color = var(--messagingRoomMessageBg) | ||||
| 				float left | ||||
| 				background $color | ||||
|  | ||||
| @@ -208,8 +206,7 @@ root(isDark) | ||||
|  | ||||
| 				> .content | ||||
| 					> .text | ||||
| 						if isDark | ||||
| 							color #fff | ||||
| 							color var(--messagingRoomMessageFg) | ||||
|  | ||||
| 			> footer | ||||
| 				text-align left | ||||
| @@ -250,18 +247,9 @@ root(isDark) | ||||
|  | ||||
| 				> .read | ||||
| 					user-select none | ||||
| 					margin 0 4px 0 0 | ||||
| 					color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5) | ||||
| 					font-size 11px | ||||
|  | ||||
| 	&[data-is-deleted] | ||||
| 		> .balloon | ||||
| 			opacity 0.5 | ||||
|  | ||||
| .message[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .message:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -262,14 +262,12 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-messaging-room | ||||
| 	display flex | ||||
| 	flex 1 | ||||
| 	flex-direction column | ||||
| 	height 100% | ||||
| 	background isDark ? #191b22 : #fff | ||||
| 	background var(--messagingRoomBg) | ||||
|  | ||||
| 	> .body | ||||
| 		width 100% | ||||
| @@ -277,24 +275,15 @@ root(isDark) | ||||
| 		margin 0 auto | ||||
| 		flex 1 | ||||
|  | ||||
| 		> .init | ||||
| 			width 100% | ||||
| 			margin 0 | ||||
| 			padding 16px 8px 8px 8px | ||||
| 			text-align center | ||||
| 			font-size 0.8em | ||||
| 			color rgba(isDark ? #fff : #000, 0.4) | ||||
|  | ||||
| 			[data-fa] | ||||
| 				margin-right 4px | ||||
|  | ||||
| 		> .init, | ||||
| 		> .empty | ||||
| 			width 100% | ||||
| 			margin 0 | ||||
| 			padding 16px 8px 8px 8px | ||||
| 			text-align center | ||||
| 			font-size 0.8em | ||||
| 			color rgba(isDark ? #fff : #000, 0.4) | ||||
| 			color var(--messagingRoomInfo) | ||||
| 			opacity 0.5 | ||||
|  | ||||
| 			[data-fa] | ||||
| 				margin-right 4px | ||||
| @@ -305,7 +294,8 @@ root(isDark) | ||||
| 			padding 16px | ||||
| 			text-align center | ||||
| 			font-size 0.8em | ||||
| 			color rgba(isDark ? #fff : #000, 0.4) | ||||
| 			color var(--messagingRoomInfo) | ||||
| 			opacity 0.5 | ||||
|  | ||||
| 			[data-fa] | ||||
| 				margin-right 4px | ||||
| @@ -349,7 +339,7 @@ root(isDark) | ||||
| 				left 0 | ||||
| 				right 0 | ||||
| 				margin 0 auto | ||||
| 				background rgba(isDark ? #fff : #000, 0.1) | ||||
| 				background var(--messagingRoomDateDividerLine) | ||||
|  | ||||
| 			> span | ||||
| 				display inline-block | ||||
| @@ -357,8 +347,8 @@ root(isDark) | ||||
| 				padding 0 16px | ||||
| 				//font-weight bold | ||||
| 				line-height 32px | ||||
| 				color rgba(isDark ? #fff : #000, 0.3) | ||||
| 				background isDark ? #191b22 : #fff | ||||
| 				color var(--messagingRoomDateDividerText) | ||||
| 				background var(--messagingRoomBg) | ||||
|  | ||||
| 	> footer | ||||
| 		position -webkit-sticky | ||||
| @@ -369,7 +359,7 @@ root(isDark) | ||||
| 		max-width 600px | ||||
| 		margin 0 auto | ||||
| 		padding 0 | ||||
| 		background rgba(isDark ? #282c37 : #fff, 0.95) | ||||
| 		//background rgba(var(--face), 0.95) | ||||
| 		background-clip content-box | ||||
|  | ||||
| 		> .new-message | ||||
| @@ -386,15 +376,15 @@ root(isDark) | ||||
| 				cursor pointer | ||||
| 				line-height 32px | ||||
| 				font-size 12px | ||||
| 				color $theme-color-foreground | ||||
| 				background $theme-color | ||||
| 				color var(--primaryForeground) | ||||
| 				background var(--primary) | ||||
| 				border-radius 16px | ||||
|  | ||||
| 				&:hover | ||||
| 					background lighten($theme-color, 10%) | ||||
| 					background var(--primaryLighten10) | ||||
|  | ||||
| 				&:active | ||||
| 					background darken($theme-color, 10%) | ||||
| 					background var(--primaryDarken10) | ||||
|  | ||||
| 				> [data-fa] | ||||
| 					position absolute | ||||
| @@ -410,10 +400,4 @@ root(isDark) | ||||
| 	transition opacity 0.5s | ||||
| 	opacity 0 | ||||
|  | ||||
| .mk-messaging-room[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-messaging-room:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -167,9 +167,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-messaging | ||||
|  | ||||
| 	&[data-compact] | ||||
| 		font-size 0.8em | ||||
| @@ -204,12 +202,10 @@ root(isDark) | ||||
| 		left 0 | ||||
| 		z-index 1 | ||||
| 		width 100% | ||||
| 		background #fff | ||||
| 		box-shadow 0 0px 2px rgba(#000, 0.2) | ||||
|  | ||||
| 		> .form | ||||
| 			padding 8px | ||||
| 			background isDark ? #282c37 : #f7f7f7 | ||||
| 			background rgba(0, 0, 0, 0.02) | ||||
|  | ||||
| 			> label | ||||
| 				display block | ||||
| @@ -229,32 +225,22 @@ root(isDark) | ||||
| 					bottom 0 | ||||
| 					left 0 | ||||
| 					width 1em | ||||
| 					line-height 56px | ||||
| 					line-height 48px | ||||
| 					margin auto | ||||
| 					color #555 | ||||
|  | ||||
| 			> input | ||||
| 				margin 0 | ||||
| 				padding 0 0 0 32px | ||||
| 				padding 0 0 0 42px | ||||
| 				width 100% | ||||
| 				font-size 1em | ||||
| 				line-height 38px | ||||
| 				color #000 | ||||
| 				line-height 48px | ||||
| 				color var(--faceText) | ||||
| 				outline none | ||||
| 				background isDark ? #191b22 : #fff | ||||
| 				border solid 1px isDark ? #495156 : #eee | ||||
| 				background transparent | ||||
| 				border none | ||||
| 				border-radius 5px | ||||
| 				box-shadow none | ||||
| 				transition color 0.5s ease, border 0.5s ease | ||||
|  | ||||
| 				&:hover | ||||
| 					border solid 1px isDark ? #b0b0b0 : #ddd | ||||
| 					transition border 0.2s ease | ||||
|  | ||||
| 				&:focus | ||||
| 					color darken($theme-color, 20%) | ||||
| 					border solid 1px $theme-color | ||||
| 					transition color 0, border 0 | ||||
|  | ||||
| 		> .result | ||||
| 			display block | ||||
| @@ -287,7 +273,7 @@ root(isDark) | ||||
| 					&:hover | ||||
| 					&:focus | ||||
| 						color #fff | ||||
| 						background $theme-color | ||||
| 						background var(--primary) | ||||
|  | ||||
| 						.name | ||||
| 							color #fff | ||||
| @@ -297,7 +283,7 @@ root(isDark) | ||||
|  | ||||
| 					&:active | ||||
| 						color #fff | ||||
| 						background darken($theme-color, 10%) | ||||
| 						background var(--primaryDarken10) | ||||
|  | ||||
| 						.name | ||||
| 							color #fff | ||||
| @@ -329,21 +315,21 @@ root(isDark) | ||||
| 		> a | ||||
| 			display block | ||||
| 			text-decoration none | ||||
| 			background isDark ? #282c37 : #fff | ||||
| 			border-bottom solid 1px isDark ? #1c2023 : #eee | ||||
| 			background var(--face) | ||||
| 			border-bottom solid 1px var(--faceDivider) | ||||
|  | ||||
| 			* | ||||
| 				pointer-events none | ||||
| 				user-select none | ||||
|  | ||||
| 			&:hover | ||||
| 				background isDark ? #1e2129 : #fafafa | ||||
| 				box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.05) | ||||
|  | ||||
| 				> .avatar | ||||
| 				.avatar | ||||
| 					filter saturate(200%) | ||||
|  | ||||
| 			&:active | ||||
| 				background isDark ? #14161b : #eee | ||||
| 				box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.1) | ||||
|  | ||||
| 			&[data-is-read] | ||||
| 			&[data-is-me] | ||||
| @@ -383,17 +369,17 @@ root(isDark) | ||||
| 						overflow hidden | ||||
| 						text-overflow ellipsis | ||||
| 						font-size 1em | ||||
| 						color isDark ? #fff : rgba(#000, 0.9) | ||||
| 						color var(--noteHeaderName) | ||||
| 						font-weight bold | ||||
| 						transition all 0.1s ease | ||||
|  | ||||
| 					> .username | ||||
| 						margin 0 8px | ||||
| 						color isDark ? #606984 : rgba(#000, 0.5) | ||||
| 						color var(--noteHeaderAcct) | ||||
|  | ||||
| 					> .mk-time | ||||
| 						margin 0 0 0 auto | ||||
| 						color isDark ? #606984 : rgba(#000, 0.5) | ||||
| 						color var(--noteHeaderInfo) | ||||
| 						font-size 80% | ||||
|  | ||||
| 				> .avatar | ||||
| @@ -413,10 +399,10 @@ root(isDark) | ||||
| 						overflow hidden | ||||
| 						overflow-wrap break-word | ||||
| 						font-size 1.1em | ||||
| 						color isDark ? #fff : rgba(#000, 0.8) | ||||
| 						color var(--faceText) | ||||
|  | ||||
| 						.me | ||||
| 							color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.4) | ||||
| 							opacity 0.7 | ||||
|  | ||||
| 					> .image | ||||
| 						display block | ||||
| @@ -461,10 +447,4 @@ root(isDark) | ||||
| 					> .avatar | ||||
| 						margin 0 12px 0 0 | ||||
|  | ||||
| .mk-messaging[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-messaging:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -2,6 +2,8 @@ | ||||
| <span class="mk-nav"> | ||||
| 	<a :href="aboutUrl">%i18n:@about%</a> | ||||
| 	<i>・</i> | ||||
| 	<a href="/stats">%i18n:@stats%</a> | ||||
| 	<i>・</i> | ||||
| 	<a :href="repositoryUrl">%i18n:@repository%</a> | ||||
| 	<i>・</i> | ||||
| 	<a :href="feedbackUrl" target="_blank">%i18n:@feedback%</a> | ||||
|   | ||||
| @@ -42,9 +42,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .bvonvjxbwzaiskogyhbwgyxvcgserpmu | ||||
| 	display flex | ||||
| 	align-items baseline | ||||
| 	white-space nowrap | ||||
| @@ -61,7 +59,7 @@ root(isDark) | ||||
| 		margin 0 .5em 0 0 | ||||
| 		padding 0 | ||||
| 		overflow hidden | ||||
| 		color isDark ? #fff : #627079 | ||||
| 		color var(--noteHeaderName) | ||||
| 		font-size 1em | ||||
| 		font-weight bold | ||||
| 		text-decoration none | ||||
| @@ -82,19 +80,19 @@ root(isDark) | ||||
| 		margin 0 .5em 0 0 | ||||
| 		padding 1px 6px | ||||
| 		font-size 80% | ||||
| 		color isDark ? #758188 : #aaa | ||||
| 		border solid 1px isDark ? #57616f : #ddd | ||||
| 		color var(--noteHeaderBadgeFg) | ||||
| 		background var(--noteHeaderBadgeBg) | ||||
| 		border-radius 3px | ||||
|  | ||||
| 		&.is-admin | ||||
| 			border-color isDark ? #d42c41 : #f56a7b | ||||
| 			color isDark ? #d42c41 : #f56a7b | ||||
| 			background var(--noteHeaderAdminBg) | ||||
| 			color var(--noteHeaderAdminFg) | ||||
|  | ||||
| 	> .username | ||||
| 		margin 0 .5em 0 0 | ||||
| 		overflow hidden | ||||
| 		text-overflow ellipsis | ||||
| 		color isDark ? #606984 : #ccc | ||||
| 		color var(--noteHeaderAcct) | ||||
| 		flex-shrink 2147483647 | ||||
|  | ||||
| 	> .info | ||||
| @@ -102,7 +100,7 @@ root(isDark) | ||||
| 		font-size 0.9em | ||||
|  | ||||
| 		> * | ||||
| 			color isDark ? #606984 : #c0c0c0 | ||||
| 			color var(--noteHeaderInfo) | ||||
|  | ||||
| 		> .mobile | ||||
| 			margin-right 8px | ||||
| @@ -110,15 +108,9 @@ root(isDark) | ||||
| 		> .app | ||||
| 			margin-right 8px | ||||
| 			padding-right 8px | ||||
| 			border-right solid 1px isDark ? #1c2023 : #eaeaea | ||||
| 			border-right solid 1px var(--faceDivider) | ||||
|  | ||||
| 		> .visibility | ||||
| 			margin-left 8px | ||||
|  | ||||
| .bvonvjxbwzaiskogyhbwgyxvcgserpmu[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .bvonvjxbwzaiskogyhbwgyxvcgserpmu:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -28,17 +28,29 @@ export default Vue.extend({ | ||||
| 			}]; | ||||
|  | ||||
| 			if (this.note.userId == this.$store.state.i.id) { | ||||
| 				items.push({ | ||||
| 					icon: '%fa:thumbtack%', | ||||
| 					text: '%i18n:@pin%', | ||||
| 					action: this.pin | ||||
| 				}); | ||||
| 				if ((this.$store.state.i.pinnedNoteIds || []).includes(this.note.id)) { | ||||
| 					items.push({ | ||||
| 						icon: '%fa:thumbtack%', | ||||
| 						text: '%i18n:@unpin%', | ||||
| 						action: this.unpin | ||||
| 					}); | ||||
| 				} else { | ||||
| 					items.push({ | ||||
| 						icon: '%fa:thumbtack%', | ||||
| 						text: '%i18n:@pin%', | ||||
| 						action: this.pin | ||||
| 					}); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			if (this.note.userId == this.$store.state.i.id || this.$store.state.i.isAdmin) { | ||||
| 				items.push({ | ||||
| 					icon: '%fa:trash-alt R%', | ||||
| 					text: '%i18n:@delete%', | ||||
| 					action: this.del | ||||
| 				}); | ||||
| 			} | ||||
|  | ||||
| 			if (this.note.uri) { | ||||
| 				items.push({ | ||||
| 					icon: '%fa:external-link-square-alt%', | ||||
| @@ -48,9 +60,11 @@ export default Vue.extend({ | ||||
| 					} | ||||
| 				}); | ||||
| 			} | ||||
|  | ||||
| 			return items; | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
| 		detail() { | ||||
| 			this.$router.push(`/notes/${ this.note.id }`); | ||||
| @@ -68,6 +82,14 @@ export default Vue.extend({ | ||||
| 			}); | ||||
| 		}, | ||||
|  | ||||
| 		unpin() { | ||||
| 			(this as any).api('i/unpin', { | ||||
| 				noteId: this.note.id | ||||
| 			}).then(() => { | ||||
| 				this.destroyDom(); | ||||
| 			}); | ||||
| 		}, | ||||
|  | ||||
| 		del() { | ||||
| 			if (!window.confirm('%i18n:@delete-confirm%')) return; | ||||
| 			(this as any).api('notes/delete', { | ||||
|   | ||||
| @@ -68,9 +68,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-poll-editor | ||||
| 	padding 8px | ||||
|  | ||||
| 	> .caution | ||||
| @@ -103,49 +101,43 @@ root(isDark) | ||||
| 				padding 6px 8px | ||||
| 				width 300px | ||||
| 				font-size 14px | ||||
| 				color isDark ? #fff : #000 | ||||
| 				background isDark ? #191b22 : #fff | ||||
| 				border solid 1px rgba($theme-color, 0.1) | ||||
| 				color var(--inputText) | ||||
| 				background var(--pollEditorInputBg) | ||||
| 				border solid 1px var(--primaryAlpha01) | ||||
| 				border-radius 4px | ||||
|  | ||||
| 				&:hover | ||||
| 					border-color rgba($theme-color, 0.2) | ||||
| 					border-color var(--primaryAlpha02) | ||||
|  | ||||
| 				&:focus | ||||
| 					border-color rgba($theme-color, 0.5) | ||||
| 					border-color var(--primaryAlpha05) | ||||
|  | ||||
| 			> button | ||||
| 				padding 4px 8px | ||||
| 				color rgba($theme-color, 0.4) | ||||
| 				color var(--primaryAlpha04) | ||||
|  | ||||
| 				&:hover | ||||
| 					color rgba($theme-color, 0.6) | ||||
| 					color var(--primaryAlpha06) | ||||
|  | ||||
| 				&:active | ||||
| 					color darken($theme-color, 30%) | ||||
| 					color var(--primaryDarken30) | ||||
|  | ||||
| 	> .add | ||||
| 		margin 8px 0 0 0 | ||||
| 		vertical-align top | ||||
| 		color $theme-color | ||||
| 		color var(--primary) | ||||
|  | ||||
| 	> .destroy | ||||
| 		position absolute | ||||
| 		top 0 | ||||
| 		right 0 | ||||
| 		padding 4px 8px | ||||
| 		color rgba($theme-color, 0.4) | ||||
| 		color var(--primaryAlpha04) | ||||
|  | ||||
| 		&:hover | ||||
| 			color rgba($theme-color, 0.6) | ||||
| 			color var(--primaryAlpha06) | ||||
|  | ||||
| 		&:active | ||||
| 			color darken($theme-color, 30%) | ||||
|  | ||||
| .mk-poll-editor[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-poll-editor:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 			color var(--primaryDarken30) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -67,10 +67,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
|  | ||||
| .mk-poll | ||||
| 	> ul | ||||
| 		display block | ||||
| 		margin 0 | ||||
| @@ -82,8 +79,8 @@ root(isDark) | ||||
| 			margin 4px 0 | ||||
| 			padding 4px 8px | ||||
| 			width 100% | ||||
| 			color isDark ? #fff : #000 | ||||
| 			border solid 1px isDark ? #5e636f : #eee | ||||
| 			color var(--pollChoiceText) | ||||
| 			border solid 1px var(--pollChoiceBorder) | ||||
| 			border-radius 4px | ||||
| 			overflow hidden | ||||
| 			cursor pointer | ||||
| @@ -99,7 +96,7 @@ root(isDark) | ||||
| 				top 0 | ||||
| 				left 0 | ||||
| 				height 100% | ||||
| 				background $theme-color | ||||
| 				background var(--primary) | ||||
| 				transition width 1s ease | ||||
|  | ||||
| 			> span | ||||
| @@ -110,7 +107,7 @@ root(isDark) | ||||
| 					margin-left 4px | ||||
|  | ||||
| 	> p | ||||
| 		color isDark ? #a3aebf : #000 | ||||
| 		color var(--text) | ||||
|  | ||||
| 		a | ||||
| 			color inherit | ||||
| @@ -125,10 +122,4 @@ root(isDark) | ||||
| 			&:active | ||||
| 				background transparent | ||||
|  | ||||
| .mk-poll[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-poll:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -210,11 +210,9 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| $border-color = rgba(27, 31, 35, 0.15) | ||||
|  | ||||
| root(isDark) | ||||
| .mk-reaction-picker | ||||
| 	position initial | ||||
|  | ||||
| 	> .backdrop | ||||
| @@ -224,11 +222,11 @@ root(isDark) | ||||
| 		z-index 10000 | ||||
| 		width 100% | ||||
| 		height 100% | ||||
| 		background isDark ? rgba(#000, 0.4) : rgba(#000, 0.1) | ||||
| 		background var(--modalBackdrop) | ||||
| 		opacity 0 | ||||
|  | ||||
| 	> .popover | ||||
| 		$bgcolor = isDark ? #2c303c : #fff | ||||
| 		$bgcolor = var(--popupBg) | ||||
| 		position absolute | ||||
| 		z-index 10001 | ||||
| 		background $bgcolor | ||||
| @@ -281,8 +279,8 @@ root(isDark) | ||||
| 			margin 0 | ||||
| 			padding 8px 10px | ||||
| 			font-size 14px | ||||
| 			color isDark ? #d6dce2 : #586069 | ||||
| 			border-bottom solid 1px isDark ? #1c2023 : #e1e4e8 | ||||
| 			color var(--popupFg) | ||||
| 			border-bottom solid 1px var(--faceDivider) | ||||
|  | ||||
| 		> div | ||||
| 			padding 4px | ||||
| @@ -301,7 +299,7 @@ root(isDark) | ||||
| 						right 0 | ||||
| 						bottom 0 | ||||
| 						left 0 | ||||
| 						border 2px solid rgba($theme-color, 0.3) | ||||
| 						border 2px solid var(--primaryAlpha03) | ||||
| 						border-radius 4px | ||||
|  | ||||
| 			> button | ||||
| @@ -312,16 +310,10 @@ root(isDark) | ||||
| 				border-radius 2px | ||||
|  | ||||
| 				&:hover | ||||
| 					background isDark ? #252731 : #eee | ||||
| 					background var(--reactionPickerButtonHoverBg) | ||||
|  | ||||
| 				&:active | ||||
| 					background $theme-color | ||||
| 					background var(--primary) | ||||
| 					box-shadow inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15) | ||||
|  | ||||
| .mk-reaction-picker[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-reaction-picker:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -39,10 +39,9 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| 	$borderColor = isDark ? #5e6673 : #eee | ||||
| 	border-top dashed 1px $borderColor | ||||
| 	border-bottom dashed 1px $borderColor | ||||
| .mk-reactions-viewer | ||||
| 	border-top dashed 1px var(--reactionViewerBorder) | ||||
| 	border-bottom dashed 1px var(--reactionViewerBorder) | ||||
| 	margin 4px 0 | ||||
|  | ||||
| 	&:empty | ||||
| @@ -60,12 +59,6 @@ root(isDark) | ||||
| 		> span | ||||
| 			margin-left 4px | ||||
| 			font-size 1.2em | ||||
| 			color isDark ? #d1d5dc : #444 | ||||
|  | ||||
| .mk-reactions-viewer[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-reactions-viewer:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 			color var(--text) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -1,16 +1,16 @@ | ||||
| <template> | ||||
| <form class="mk-signin" :class="{ signing }" @submit.prevent="onSubmit"> | ||||
| 	<div class="avatar" :style="{ backgroundImage: user ? `url('${ user.avatarUrl }')` : null }" v-show="withAvatar"></div> | ||||
| 	<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" spellcheck="false" autofocus required @input="onUsernameChange"> | ||||
| 	<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" spellcheck="false" autofocus required @input="onUsernameChange" styl="fill"> | ||||
| 		<span>%i18n:@username%</span> | ||||
| 		<span slot="prefix">@</span> | ||||
| 		<span slot="suffix">@{{ host }}</span> | ||||
| 	</ui-input> | ||||
| 	<ui-input v-model="password" type="password" required> | ||||
| 	<ui-input v-model="password" type="password" required styl="fill"> | ||||
| 		<span>%i18n:@password%</span> | ||||
| 		<span slot="prefix">%fa:lock%</span> | ||||
| 	</ui-input> | ||||
| 	<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/> | ||||
| 	<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required styl="fill"/> | ||||
| 	<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button> | ||||
| 	<p style="margin: 8px 0;">%i18n:@or% <a :href="`${apiUrl}/signin/twitter`">%i18n:@signin-with-twitter%</a></p> | ||||
| </form> | ||||
| @@ -68,7 +68,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .mk-signin | ||||
| 	color #555 | ||||
|   | ||||
| @@ -1,12 +1,12 @@ | ||||
| <template> | ||||
| <form class="mk-signup" @submit.prevent="onSubmit" :autocomplete="Math.random()"> | ||||
| 	<template v-if="meta"> | ||||
| 		<ui-input v-if="meta.disableRegistration" v-model="invitationCode" type="text" :autocomplete="Math.random()" spellcheck="false" required> | ||||
| 		<ui-input v-if="meta.disableRegistration" v-model="invitationCode" type="text" :autocomplete="Math.random()" spellcheck="false" required styl="fill"> | ||||
| 			<span>%i18n:@invitation-code%</span> | ||||
| 			<span slot="prefix">%fa:id-card-alt%</span> | ||||
| 			<p slot="text" v-html="'%i18n:@invitation-info%'.replace('{}', meta.maintainer.url)"></p> | ||||
| 		</ui-input> | ||||
| 		<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" :autocomplete="Math.random()" spellcheck="false" required @input="onChangeUsername"> | ||||
| 		<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" :autocomplete="Math.random()" spellcheck="false" required @input="onChangeUsername" styl="fill"> | ||||
| 			<span>%i18n:@username%</span> | ||||
| 			<span slot="prefix">@</span> | ||||
| 			<span slot="suffix">@{{ host }}</span> | ||||
| @@ -18,7 +18,7 @@ | ||||
| 			<p slot="text" v-if="usernameState == 'min-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-short%</p> | ||||
| 			<p slot="text" v-if="usernameState == 'max-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-long%</p> | ||||
| 		</ui-input> | ||||
| 		<ui-input v-model="password" type="password" :autocomplete="Math.random()" required @input="onChangePassword" :with-password-meter="true"> | ||||
| 		<ui-input v-model="password" type="password" :autocomplete="Math.random()" required @input="onChangePassword" :with-password-meter="true" styl="fill"> | ||||
| 			<span>%i18n:@password%</span> | ||||
| 			<span slot="prefix">%fa:lock%</span> | ||||
| 			<div slot="text"> | ||||
| @@ -27,7 +27,7 @@ | ||||
| 				<p slot="text" v-if="passwordStrength == 'high'" style="color:#3CB7B5">%fa:check .fw% %i18n:@strong-password%</p> | ||||
| 			</div> | ||||
| 		</ui-input> | ||||
| 		<ui-input v-model="retypedPassword" type="password" :autocomplete="Math.random()" required @input="onChangePasswordRetype"> | ||||
| 		<ui-input v-model="retypedPassword" type="password" :autocomplete="Math.random()" required @input="onChangePasswordRetype" styl="fill"> | ||||
| 			<span>%i18n:@password% (%i18n:@retype%)</span> | ||||
| 			<span slot="prefix">%fa:lock%</span> | ||||
| 			<div slot="text"> | ||||
| @@ -151,7 +151,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .mk-signup | ||||
| 	min-width 302px | ||||
|   | ||||
| @@ -1,199 +0,0 @@ | ||||
| <template> | ||||
| <div | ||||
| 	class="mk-switch" | ||||
| 	:class="{ disabled, checked }" | ||||
| 	role="switch" | ||||
| 	:aria-checked="checked" | ||||
| 	:aria-disabled="disabled" | ||||
| 	@click="switchValue" | ||||
| 	@mouseover="mouseenter" | ||||
| > | ||||
| 	<input | ||||
| 		type="checkbox" | ||||
| 		@change="handleChange" | ||||
| 		ref="input" | ||||
| 		:disabled="disabled" | ||||
| 		@keydown.enter="switchValue" | ||||
| 	> | ||||
| 	<span class="button"> | ||||
| 		<span :style="{ transform }"></span> | ||||
| 	</span> | ||||
| 	<span class="label"> | ||||
| 		<span :aria-hidden="!checked">{{ text }}</span> | ||||
| 		<p :aria-hidden="!checked"> | ||||
| 			<slot></slot> | ||||
| 		</p> | ||||
| 	</span> | ||||
| </div> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| import Vue from 'vue'; | ||||
| export default Vue.extend({ | ||||
| 	props: { | ||||
| 		value: { | ||||
| 			type: Boolean, | ||||
| 			default: false | ||||
| 		}, | ||||
| 		disabled: { | ||||
| 			type: Boolean, | ||||
| 			default: false | ||||
| 		}, | ||||
| 		text: String | ||||
| 	},/* | ||||
| 	created() { | ||||
| 		if (!~[true, false].indexOf(this.value)) { | ||||
| 			this.$emit('input', false); | ||||
| 		} | ||||
| 	},*/ | ||||
| 	computed: { | ||||
| 		checked(): boolean { | ||||
| 			return this.value; | ||||
| 		}, | ||||
| 		transform(): string { | ||||
| 			return this.checked ? 'translate3d(20px, 0, 0)' : ''; | ||||
| 		} | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		value() { | ||||
| 			(this.$el).style.transition = 'all 0.3s'; | ||||
| 			(this.$refs.input as any).checked = this.checked; | ||||
| 		} | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		(this.$refs.input as any).checked = this.checked; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		mouseenter() { | ||||
| 			(this.$el).style.transition = 'all 0s'; | ||||
| 		}, | ||||
| 		handleChange() { | ||||
| 			(this.$el).style.transition = 'all 0.3s'; | ||||
| 			this.$emit('input', !this.checked); | ||||
| 			this.$emit('change', !this.checked); | ||||
| 			this.$nextTick(() => { | ||||
| 				// set input's checked property | ||||
| 				// in case parent refuses to change component's value | ||||
| 				(this.$refs.input as any).checked = this.checked; | ||||
| 			}); | ||||
| 		}, | ||||
| 		switchValue() { | ||||
| 			!this.disabled && this.handleChange(); | ||||
| 		} | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| 	display flex | ||||
| 	margin 12px 0 | ||||
| 	cursor pointer | ||||
| 	transition all 0.3s | ||||
|  | ||||
| 	> * | ||||
| 		user-select none | ||||
|  | ||||
| 	&.disabled | ||||
| 		opacity 0.6 | ||||
| 		cursor not-allowed | ||||
|  | ||||
| 	&.checked | ||||
| 		> .button | ||||
| 			background-color $theme-color | ||||
| 			border-color $theme-color | ||||
|  | ||||
| 		> .label | ||||
| 			> span | ||||
| 				color $theme-color | ||||
|  | ||||
| 		&:hover | ||||
| 			> .label | ||||
| 				> span | ||||
| 					color darken($theme-color, 10%) | ||||
|  | ||||
| 			> .button | ||||
| 				background darken($theme-color, 10%) | ||||
| 				border-color darken($theme-color, 10%) | ||||
|  | ||||
| 	&:hover | ||||
| 		> .label | ||||
| 			> span | ||||
| 				color isDark ? #fff : #2e3338 | ||||
|  | ||||
| 		> .button | ||||
| 			$color = isDark ? #15181d : #ced2da | ||||
| 			background $color | ||||
| 			border-color $color | ||||
|  | ||||
| 	> input | ||||
| 		position absolute | ||||
| 		width 0 | ||||
| 		height 0 | ||||
| 		opacity 0 | ||||
| 		margin 0 | ||||
|  | ||||
| 		&:focus + .button | ||||
| 			&:after | ||||
| 				content "" | ||||
| 				pointer-events none | ||||
| 				position absolute | ||||
| 				top -5px | ||||
| 				right -5px | ||||
| 				bottom -5px | ||||
| 				left -5px | ||||
| 				border 2px solid rgba($theme-color, 0.3) | ||||
| 				border-radius 14px | ||||
|  | ||||
| 	> .button | ||||
| 		$color = isDark ? #1c1f25 : #dcdfe6 | ||||
|  | ||||
| 		display inline-block | ||||
| 		margin 0 | ||||
| 		width 40px | ||||
| 		min-width 40px | ||||
| 		height 20px | ||||
| 		min-height 20px | ||||
| 		background $color | ||||
| 		border 1px solid $color | ||||
| 		outline none | ||||
| 		border-radius 10px | ||||
| 		transition inherit | ||||
|  | ||||
| 		> * | ||||
| 			position absolute | ||||
| 			top 1px | ||||
| 			left 1px | ||||
| 			border-radius 100% | ||||
| 			transition transform 0.3s | ||||
| 			width 16px | ||||
| 			height 16px | ||||
| 			background-color #fff | ||||
|  | ||||
| 	> .label | ||||
| 		margin-left 8px | ||||
| 		display block | ||||
| 		font-size 15px | ||||
| 		cursor pointer | ||||
| 		transition inherit | ||||
|  | ||||
| 		> span | ||||
| 			display block | ||||
| 			line-height 20px | ||||
| 			color isDark ? #c4ccd2 : #4a535a | ||||
| 			transition inherit | ||||
|  | ||||
| 		> p | ||||
| 			margin 0 | ||||
| 			//font-size 90% | ||||
| 			color isDark ? #78858e : #9daab3 | ||||
|  | ||||
| .mk-switch[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-switch:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
| @@ -63,7 +63,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .jtivnzhfwquxpsfidertopbmwmchmnmo | ||||
| 	height 100% | ||||
| 	width 100% | ||||
|  | ||||
| @@ -81,10 +81,4 @@ root(isDark) | ||||
| 		height 100% | ||||
| 		width 100% | ||||
|  | ||||
| .jtivnzhfwquxpsfidertopbmwmchmnmo[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .jtivnzhfwquxpsfidertopbmwmchmnmo:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
							
								
								
									
										290
									
								
								src/client/app/common/views/components/theme.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										290
									
								
								src/client/app/common/views/components/theme.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,290 @@ | ||||
| <template> | ||||
| <div class="nicnklzforebnpfgasiypmpdaaglujqm"> | ||||
| 	<label> | ||||
| 		<span>%i18n:@light-theme%</span> | ||||
| 		<ui-select v-model="light" placeholder="%i18n:@light-theme%"> | ||||
| 			<option v-for="x in themes" :value="x.id" :key="x.id">{{ x.name }}</option> | ||||
| 		</ui-select> | ||||
| 	</label> | ||||
|  | ||||
| 	<label> | ||||
| 		<span>%i18n:@dark-theme%</span> | ||||
| 		<ui-select v-model="dark" placeholder="%i18n:@dark-theme%"> | ||||
| 			<option v-for="x in themes" :value="x.id" :key="x.id">{{ x.name }}</option> | ||||
| 		</ui-select> | ||||
| 	</label> | ||||
|  | ||||
| 	<details class="creator"> | ||||
| 		<summary>%fa:palette% %i18n:@create-a-theme%</summary> | ||||
| 		<div> | ||||
| 			<span>%i18n:@base-theme%:</span> | ||||
| 			<ui-radio v-model="myThemeBase" value="light">%i18n:@base-theme-light%</ui-radio> | ||||
| 			<ui-radio v-model="myThemeBase" value="dark">%i18n:@base-theme-dark%</ui-radio> | ||||
| 		</div> | ||||
| 		<div> | ||||
| 			<ui-input v-model="myThemeName"> | ||||
| 				<span>%i18n:@theme-name%</span> | ||||
| 			</ui-input> | ||||
| 			<ui-textarea v-model="myThemeDesc"> | ||||
| 				<span>%i18n:@desc%</span> | ||||
| 			</ui-textarea> | ||||
| 		</div> | ||||
| 		<div> | ||||
| 			<div style="padding-bottom:8px;">%i18n:@primary-color%:</div> | ||||
| 			<color-picker v-model="myThemePrimary"/> | ||||
| 		</div> | ||||
| 		<div> | ||||
| 			<div style="padding-bottom:8px;">%i18n:@secondary-color%:</div> | ||||
| 			<color-picker v-model="myThemeSecondary"/> | ||||
| 		</div> | ||||
| 		<div> | ||||
| 			<div style="padding-bottom:8px;">%i18n:@text-color%:</div> | ||||
| 			<color-picker v-model="myThemeText"/> | ||||
| 		</div> | ||||
| 		<ui-button @click="preview()">%fa:eye% %i18n:@preview-created-theme%</ui-button> | ||||
| 		<ui-button primary @click="gen()">%fa:save R% %i18n:@save-created-theme%</ui-button> | ||||
| 	</details> | ||||
|  | ||||
| 	<details> | ||||
| 		<summary>%fa:download% %i18n:@install-a-theme%</summary> | ||||
| 		<ui-button @click="import_()">%fa:file-import% %i18n:@import%</ui-button> | ||||
| 		<input ref="file" type="file" accept=".misskeytheme" style="display:none;" @change="onUpdateImportFile"/> | ||||
| 		<p>%i18n:@import-by-code%:</p> | ||||
| 		<ui-textarea v-model="installThemeCode"> | ||||
| 			<span>%i18n:@theme-code%</span> | ||||
| 		</ui-textarea> | ||||
| 		<ui-button @click="() => install(this.installThemeCode)">%fa:check% %i18n:@install%</ui-button> | ||||
| 	</details> | ||||
|  | ||||
| 	<details> | ||||
| 		<summary>%fa:folder-open% %i18n:@installed-themes%</summary> | ||||
| 		<ui-select v-model="selectedInstalledThemeId" placeholder="%i18n:@select-theme%"> | ||||
| 			<option v-for="x in installedThemes" :value="x.id" :key="x.id">{{ x.name }}</option> | ||||
| 		</ui-select> | ||||
| 		<template v-if="selectedInstalledTheme"> | ||||
| 			<ui-input readonly :value="selectedInstalledTheme.author"> | ||||
| 				<span>%i18n:@author%</span> | ||||
| 			</ui-input> | ||||
| 			<ui-textarea v-if="selectedInstalledTheme.desc" readonly :value="selectedInstalledTheme.desc"> | ||||
| 				<span>%i18n:@desc%</span> | ||||
| 			</ui-textarea> | ||||
| 			<ui-textarea readonly :value="selectedInstalledThemeCode"> | ||||
| 				<span>%i18n:@theme-code%</span> | ||||
| 			</ui-textarea> | ||||
| 			<ui-button @click="export_()" link :download="`${selectedInstalledTheme.name}.misskeytheme`" ref="export">%fa:box% %i18n:@export%</ui-button> | ||||
| 			<ui-button @click="uninstall()">%fa:trash-alt R% %i18n:@uninstall%</ui-button> | ||||
| 		</template> | ||||
| 	</details> | ||||
| </div> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| import Vue from 'vue'; | ||||
| import { lightTheme, darkTheme, builtinThemes, applyTheme, Theme } from '../../../theme'; | ||||
| import { Chrome } from 'vue-color'; | ||||
| import * as uuid from 'uuid'; | ||||
| import * as tinycolor from 'tinycolor2'; | ||||
| import * as JSON5 from 'json5'; | ||||
|  | ||||
| // 後方互換性のため | ||||
| function convertOldThemedefinition(t) { | ||||
| 	const t2 = { | ||||
| 		id: t.meta.id, | ||||
| 		name: t.meta.name, | ||||
| 		author: t.meta.author, | ||||
| 		base: t.meta.base, | ||||
| 		vars: t.meta.vars, | ||||
| 		props: t | ||||
| 	}; | ||||
| 	delete t2.props.meta; | ||||
| 	return t2; | ||||
| } | ||||
|  | ||||
| export default Vue.extend({ | ||||
| 	components: { | ||||
| 		ColorPicker: Chrome | ||||
| 	}, | ||||
|  | ||||
| 	data() { | ||||
| 		return { | ||||
| 			installThemeCode: null, | ||||
| 			selectedInstalledThemeId: null, | ||||
| 			myThemeBase: 'light', | ||||
| 			myThemeName: '', | ||||
| 			myThemeDesc: '', | ||||
| 			myThemePrimary: lightTheme.vars.primary, | ||||
| 			myThemeSecondary: lightTheme.vars.secondary, | ||||
| 			myThemeText: lightTheme.vars.text | ||||
| 		}; | ||||
| 	}, | ||||
|  | ||||
| 	computed: { | ||||
| 		themes(): Theme[] { | ||||
| 			return this.$store.state.device.themes.concat(builtinThemes); | ||||
| 		}, | ||||
|  | ||||
| 		installedThemes(): Theme[] { | ||||
| 			return this.$store.state.device.themes; | ||||
| 		}, | ||||
|  | ||||
| 		light: { | ||||
| 			get() { return this.$store.state.device.lightTheme; }, | ||||
| 			set(value) { this.$store.commit('device/set', { key: 'lightTheme', value }); } | ||||
| 		}, | ||||
|  | ||||
| 		dark: { | ||||
| 			get() { return this.$store.state.device.darkTheme; }, | ||||
| 			set(value) { this.$store.commit('device/set', { key: 'darkTheme', value }); } | ||||
| 		}, | ||||
|  | ||||
| 		selectedInstalledTheme() { | ||||
| 			if (this.selectedInstalledThemeId == null) return null; | ||||
| 			return this.installedThemes.find(x => x.id == this.selectedInstalledThemeId); | ||||
| 		}, | ||||
|  | ||||
| 		selectedInstalledThemeCode() { | ||||
| 			if (this.selectedInstalledTheme == null) return null; | ||||
| 			return JSON5.stringify(this.selectedInstalledTheme, null, '\t'); | ||||
| 		}, | ||||
|  | ||||
| 		myTheme(): any { | ||||
| 			return { | ||||
| 				name: this.myThemeName, | ||||
| 				author: this.$store.state.i.username, | ||||
| 				desc: this.myThemeDesc, | ||||
| 				base: this.myThemeBase, | ||||
| 				vars: { | ||||
| 					primary: tinycolor(typeof this.myThemePrimary == 'string' ? this.myThemePrimary : this.myThemePrimary.rgba).toRgbString(), | ||||
| 					secondary: tinycolor(typeof this.myThemeSecondary == 'string' ? this.myThemeSecondary : this.myThemeSecondary.rgba).toRgbString(), | ||||
| 					text: tinycolor(typeof this.myThemeText == 'string' ? this.myThemeText : this.myThemeText.rgba).toRgbString() | ||||
| 				} | ||||
| 			}; | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	watch: { | ||||
| 		myThemeBase(v) { | ||||
| 			const theme = v == 'light' ? lightTheme : darkTheme; | ||||
| 			this.myThemePrimary = theme.vars.primary; | ||||
| 			this.myThemeSecondary = theme.vars.secondary; | ||||
| 			this.myThemeText = theme.vars.text; | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	beforeCreate() { | ||||
| 		// migrate old theme definitions | ||||
| 		// 後方互換性のため | ||||
| 		this.$store.commit('device/set', { | ||||
| 			key: 'themes', value: this.$store.state.device.themes.map(t => { | ||||
| 				if (t.id == null) { | ||||
| 					return convertOldThemedefinition(t); | ||||
| 				} else { | ||||
| 					return t; | ||||
| 				} | ||||
| 			}) | ||||
| 		}); | ||||
| 	}, | ||||
|  | ||||
| 	methods: { | ||||
| 		install(code) { | ||||
| 			let theme; | ||||
|  | ||||
| 			try { | ||||
| 				theme = JSON5.parse(code); | ||||
| 			} catch (e) { | ||||
| 				alert('%i18n:@invalid-theme%'); | ||||
| 				return; | ||||
| 			} | ||||
|  | ||||
| 			// 後方互換性のため | ||||
| 			if (theme.id == null && theme.meta != null) { | ||||
| 				theme = convertOldThemedefinition(theme); | ||||
| 			} | ||||
|  | ||||
| 			if (theme.id == null) { | ||||
| 				alert('%i18n:@invalid-theme%'); | ||||
| 				return; | ||||
| 			} | ||||
|  | ||||
| 			if (this.$store.state.device.themes.some(t => t.id == theme.id)) { | ||||
| 				alert('%i18n:@already-installed%'); | ||||
| 				return; | ||||
| 			} | ||||
|  | ||||
| 			const themes = this.$store.state.device.themes.concat(theme); | ||||
| 			this.$store.commit('device/set', { | ||||
| 				key: 'themes', value: themes | ||||
| 			}); | ||||
|  | ||||
| 			alert('%i18n:@installed%'.replace('{}', theme.name)); | ||||
| 		}, | ||||
|  | ||||
| 		uninstall() { | ||||
| 			const theme = this.selectedInstalledTheme; | ||||
| 			const themes = this.$store.state.device.themes.filter(t => t.id != theme.id); | ||||
| 			this.$store.commit('device/set', { | ||||
| 				key: 'themes', value: themes | ||||
| 			}); | ||||
| 			alert('%i18n:@uninstalled%'.replace('{}', theme.name)); | ||||
| 		}, | ||||
|  | ||||
| 		import_() { | ||||
| 			(this.$refs.file as any).click(); | ||||
| 		} | ||||
|  | ||||
| 		export_() { | ||||
| 			const blob = new Blob([this.selectedInstalledThemeCode], { | ||||
| 				type: 'application/json5' | ||||
| 			}); | ||||
| 			this.$refs.export.$el.href = window.URL.createObjectURL(blob); | ||||
| 		}, | ||||
|  | ||||
| 		onUpdateImportFile() { | ||||
| 			const f = (this.$refs.file as any).files[0]; | ||||
|  | ||||
| 			const reader = new FileReader(); | ||||
|  | ||||
| 			reader.onload = e => { | ||||
| 				this.install(e.target.result); | ||||
| 			}; | ||||
|  | ||||
| 			reader.readAsText(f); | ||||
| 		}, | ||||
|  | ||||
| 		preview() { | ||||
| 			applyTheme(this.myTheme, false); | ||||
| 		}, | ||||
|  | ||||
| 		gen() { | ||||
| 			const theme = this.myTheme; | ||||
| 			if (theme.name == null || theme.name.trim() == '') { | ||||
| 				alert('%i18n:@theme-name-required%'); | ||||
| 				return; | ||||
| 			} | ||||
| 			theme.id = uuid(); | ||||
| 			const themes = this.$store.state.device.themes.concat(theme); | ||||
| 			this.$store.commit('device/set', { | ||||
| 				key: 'themes', value: themes | ||||
| 			}); | ||||
| 			alert('%i18n:@saved%'); | ||||
| 		} | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| .nicnklzforebnpfgasiypmpdaaglujqm | ||||
| 	> details | ||||
| 		border-top solid 1px var(--faceDivider) | ||||
|  | ||||
| 		> summary | ||||
| 			padding 16px 0 | ||||
|  | ||||
| 		> *:last-child | ||||
| 			margin-bottom 16px | ||||
|  | ||||
| 	> .creator | ||||
| 		> div | ||||
| 			padding 16px 0 | ||||
| 			border-bottom solid 1px var(--faceDivider) | ||||
| </style> | ||||
| @@ -49,13 +49,14 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .csqvmxybqbycalfhkxvyfrgbrdalkaoc | ||||
| 	> .fetching | ||||
| 	> .empty | ||||
| 		margin 0 | ||||
| 		padding 16px | ||||
| 		text-align center | ||||
| 		color #aaa | ||||
| 		color var(--text) | ||||
| 		opacity 0.7 | ||||
|  | ||||
| 		> [data-fa] | ||||
| 			margin-right 4px | ||||
| @@ -70,13 +71,13 @@ root(isDark) | ||||
| 			padding 14px 16px | ||||
|  | ||||
| 			&:not(:last-child) | ||||
| 				border-bottom solid 1px isDark ? #393f4f : #eee | ||||
| 				border-bottom solid 1px var(--faceDivider) | ||||
|  | ||||
| 			> .tag | ||||
| 				flex 1 | ||||
| 				overflow hidden | ||||
| 				font-size 14px | ||||
| 				color isDark ? #9baec8 : #65727b | ||||
| 				color var(--text) | ||||
|  | ||||
| 				> a | ||||
| 					display block | ||||
| @@ -94,10 +95,4 @@ root(isDark) | ||||
| 			> .chart | ||||
| 				height 30px | ||||
|  | ||||
| .csqvmxybqbycalfhkxvyfrgbrdalkaoc[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .csqvmxybqbycalfhkxvyfrgbrdalkaoc:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| <template> | ||||
| <div class="ui-button" :class="[styl]"> | ||||
| 	<button :type="type" @click="$emit('click')"> | ||||
| 		<slot></slot> | ||||
| 	</button> | ||||
| </div> | ||||
| <component class="dmtdnykelhudezerjlfpbhgovrgnqqgr" :is="link ? 'a' : 'button'" :class="[styl, { inline, primary }]" :type="type" @click="$emit('click')"> | ||||
| 	<slot></slot> | ||||
| </component> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| @@ -13,70 +11,100 @@ export default Vue.extend({ | ||||
| 		type: { | ||||
| 			type: String, | ||||
| 			required: false | ||||
| 		}, | ||||
| 		primary: { | ||||
| 			type: Boolean, | ||||
| 			required: false, | ||||
| 			default: false | ||||
| 		}, | ||||
| 		inline: { | ||||
| 			type: Boolean, | ||||
| 			required: false, | ||||
| 			default: false | ||||
| 		}, | ||||
| 		link: { | ||||
| 			type: Boolean, | ||||
| 			required: false, | ||||
| 			default: false | ||||
| 		} | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			styl: 'fill' | ||||
| 		}; | ||||
| 	}, | ||||
| 	inject: { | ||||
| 		isCardChild: { default: false } | ||||
| 	}, | ||||
| 	created() { | ||||
| 		if (this.isCardChild) { | ||||
| 			this.styl = 'line'; | ||||
| 		} | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
| .dmtdnykelhudezerjlfpbhgovrgnqqgr | ||||
| 	display block | ||||
| 	width 100% | ||||
| 	margin 0 | ||||
| 	padding 8px | ||||
| 	text-align center | ||||
| 	font-weight normal | ||||
| 	font-size 16px | ||||
| 	border none | ||||
| 	border-radius 6px | ||||
| 	outline none | ||||
| 	box-shadow none | ||||
| 	text-decoration none | ||||
| 	user-select none | ||||
|  | ||||
| root(isDark, fill) | ||||
| 	> button | ||||
| 		display block | ||||
| 		width 100% | ||||
| 		margin 0 | ||||
| 		padding 0 | ||||
| 	* | ||||
| 		pointer-events none | ||||
|  | ||||
| 	&:focus | ||||
| 		&:after | ||||
| 			content "" | ||||
| 			pointer-events none | ||||
| 			position absolute | ||||
| 			top -5px | ||||
| 			right -5px | ||||
| 			bottom -5px | ||||
| 			left -5px | ||||
| 			border 2px solid var(--primaryAlpha03) | ||||
| 			border-radius 10px | ||||
|  | ||||
| 	&:not(.inline) + .dmtdnykelhudezerjlfpbhgovrgnqqgr | ||||
| 		margin-top 16px | ||||
|  | ||||
| 	&.inline | ||||
| 		display inline-block | ||||
| 		width auto | ||||
|  | ||||
| 	&.primary | ||||
| 		font-weight bold | ||||
| 		font-size 16px | ||||
| 		line-height 44px | ||||
| 		border none | ||||
| 		border-radius 6px | ||||
| 		outline none | ||||
| 		box-shadow none | ||||
|  | ||||
| 		if fill | ||||
| 			color $theme-color-foreground | ||||
| 			background $theme-color | ||||
| 	&.fill | ||||
| 		color var(--text) | ||||
| 		background var(--buttonBg) | ||||
|  | ||||
| 		&:hover | ||||
| 			background var(--buttonHoverBg) | ||||
|  | ||||
| 		&:active | ||||
| 			background var(--buttonActiveBg) | ||||
|  | ||||
| 		&.primary | ||||
| 			color var(--primaryForeground) | ||||
| 			background var(--primary) | ||||
|  | ||||
| 			&:hover | ||||
| 				background lighten($theme-color, 5%) | ||||
| 				background var(--primaryLighten5) | ||||
|  | ||||
| 			&:active | ||||
| 				background darken($theme-color, 5%) | ||||
| 		else | ||||
| 			color $theme-color | ||||
| 			background none | ||||
| 				background var(--primaryDarken5) | ||||
|  | ||||
| 			&:hover | ||||
| 				color darken($theme-color, 5%) | ||||
|  | ||||
| 			&:active | ||||
| 				background rgba($theme-color, 0.3) | ||||
|  | ||||
| .ui-button[data-darkmode] | ||||
| 	&.fill | ||||
| 		root(true, true) | ||||
| 	&:not(.fill) | ||||
| 		root(true, false) | ||||
| 		color var(--primary) | ||||
| 		background none | ||||
|  | ||||
| .ui-button:not([data-darkmode]) | ||||
| 	&.fill | ||||
| 		root(false, true) | ||||
| 	&:not(.fill) | ||||
| 		root(false, false) | ||||
| 		&:hover | ||||
| 			color var(--primaryDarken5) | ||||
|  | ||||
| 		&:active | ||||
| 			background var(--primaryAlpha03) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -20,26 +20,24 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .ui-card | ||||
| 	margin 16px | ||||
| 	color isDark ? #fff : #000 | ||||
| 	background isDark ? #282C37 : #fff | ||||
| 	color var(--faceText) | ||||
| 	background var(--face) | ||||
| 	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) | ||||
|  | ||||
| 	> header | ||||
| 		padding 16px | ||||
| 		font-weight bold | ||||
| 		font-size 20px | ||||
| 		color isDark ? #fff : #444 | ||||
| 		color var(--faceText) | ||||
|  | ||||
| 		@media (min-width 500px) | ||||
| 			padding 24px 32px | ||||
|  | ||||
| 	> section | ||||
| 		padding 20px 16px | ||||
| 		border-top solid 1px isDark ? rgba(#000, 0.3) : rgba(#000, 0.1) | ||||
| 		border-top solid 1px var(--faceDivider) | ||||
|  | ||||
| 		@media (min-width 500px) | ||||
| 			padding 32px | ||||
| @@ -50,12 +48,5 @@ root(isDark) | ||||
| 		> header | ||||
| 			margin-bottom 16px | ||||
| 			font-weight bold | ||||
| 			color isDark ? #fff : #444 | ||||
|  | ||||
| .ui-card[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .ui-card:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| 			color var(--faceText) | ||||
| </style> | ||||
|   | ||||
| @@ -19,7 +19,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .ui-form | ||||
| 	> fieldset | ||||
|   | ||||
| @@ -25,9 +25,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .nvemkhtwcnnpkdrwfcbzuwhfulejhmzg | ||||
| 	display inline-block | ||||
|  | ||||
| 	& + .nvemkhtwcnnpkdrwfcbzuwhfulejhmzg | ||||
| @@ -38,11 +36,11 @@ root(isDark) | ||||
| 		margin 0 | ||||
| 		padding 12px 20px | ||||
| 		font-size 14px | ||||
| 		border 1px solid isDark ? #6d727d : #dcdfe6 | ||||
| 		border 1px solid var(--formButtonBorder) | ||||
| 		border-radius 4px | ||||
| 		outline none | ||||
| 		box-shadow none | ||||
| 		color isDark ? #fff : #606266 | ||||
| 		color var(--text) | ||||
| 		transition 0.1s | ||||
|  | ||||
| 		* | ||||
| @@ -50,40 +48,34 @@ root(isDark) | ||||
|  | ||||
| 		&:hover | ||||
| 		&:focus | ||||
| 			color $theme-color | ||||
| 			background rgba($theme-color, isDark ? 0.2 : 0.12) | ||||
| 			border-color rgba($theme-color, isDark ? 0.5 : 0.3) | ||||
| 			color var(--primary) | ||||
| 			background var(--formButtonHoverBg) | ||||
| 			border-color var(--formButtonHoverBorder) | ||||
|  | ||||
| 		&:active | ||||
| 			color darken($theme-color, 20%) | ||||
| 			background rgba($theme-color, 0.12) | ||||
| 			border-color $theme-color | ||||
| 			color var(--primaryDarken20) | ||||
| 			background var(--formButtonActiveBg) | ||||
| 			border-color var(--primary) | ||||
| 			transition all 0s | ||||
|  | ||||
| 	&.primary | ||||
| 		> button | ||||
| 			border 1px solid $theme-color | ||||
| 			background $theme-color | ||||
| 			color $theme-color-foreground | ||||
| 			border 1px solid var(--primary) | ||||
| 			background var(--primary) | ||||
| 			color var(--primaryForeground) | ||||
|  | ||||
| 			&:hover | ||||
| 			&:focus | ||||
| 				background lighten($theme-color, 20%) | ||||
| 				border-color lighten($theme-color, 20%) | ||||
| 				background var(--primaryLighten20) | ||||
| 				border-color var(--primaryLighten20) | ||||
|  | ||||
| 			&:active | ||||
| 				background darken($theme-color, 20%) | ||||
| 				border-color darken($theme-color, 20%) | ||||
| 				background var(--primaryDarken20) | ||||
| 				border-color var(--primaryDarken20) | ||||
| 				transition all 0s | ||||
|  | ||||
| 	&.round | ||||
| 		> button | ||||
| 			border-radius 64px | ||||
|  | ||||
| .nvemkhtwcnnpkdrwfcbzuwhfulejhmzg[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .nvemkhtwcnnpkdrwfcbzuwhfulejhmzg:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -49,9 +49,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .uywduthvrdnlpsvsjkqigicixgyfctto | ||||
| 	display inline-flex | ||||
| 	margin 0 16px 0 0 | ||||
| 	cursor pointer | ||||
| @@ -62,7 +60,7 @@ root(isDark) | ||||
|  | ||||
| 	&:hover | ||||
| 		> .button | ||||
| 			border solid 2px isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54) | ||||
| 			border solid 2px var(--inputLabel) | ||||
|  | ||||
| 	&.disabled | ||||
| 		opacity 0.6 | ||||
| @@ -70,15 +68,15 @@ root(isDark) | ||||
|  | ||||
| 	&.checked | ||||
| 		> .button | ||||
| 			border-color $theme-color | ||||
| 			border-color var(--primary) | ||||
|  | ||||
| 			&:after | ||||
| 				background-color $theme-color | ||||
| 				background-color var(--primary) | ||||
| 				transform scale(1) | ||||
| 				opacity 1 | ||||
|  | ||||
| 		> .label | ||||
| 			color $theme-color | ||||
| 			color var(--primary) | ||||
|  | ||||
| 	> input | ||||
| 		position absolute | ||||
| @@ -93,7 +91,7 @@ root(isDark) | ||||
| 		width 20px | ||||
| 		height 20px | ||||
| 		background none | ||||
| 		border solid 2px isDark ? rgba(#fff, 0.6) : rgba(#000, 0.4) | ||||
| 		border solid 2px var(--radioBorder) | ||||
| 		border-radius 100% | ||||
| 		transition inherit | ||||
|  | ||||
| @@ -117,10 +115,4 @@ root(isDark) | ||||
| 		line-height 20px | ||||
| 		cursor pointer | ||||
|  | ||||
| .uywduthvrdnlpsvsjkqigicixgyfctto[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .uywduthvrdnlpsvsjkqigicixgyfctto:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -71,14 +71,18 @@ export default Vue.extend({ | ||||
| 			type: Boolean, | ||||
| 			required: false, | ||||
| 			default: false | ||||
| 		}, | ||||
| 		styl: { | ||||
| 			type: String, | ||||
| 			required: false, | ||||
| 			default: 'line' | ||||
| 		} | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			v: this.value, | ||||
| 			focused: false, | ||||
| 			passwordStrength: '', | ||||
| 			styl: 'fill' | ||||
| 			passwordStrength: '' | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| @@ -117,14 +121,6 @@ export default Vue.extend({ | ||||
| 			} | ||||
| 		} | ||||
| 	}, | ||||
| 	inject: { | ||||
| 		isCardChild: { default: false } | ||||
| 	}, | ||||
| 	created() { | ||||
| 		if (this.isCardChild) { | ||||
| 			this.styl = 'line'; | ||||
| 		} | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		if (this.$refs.prefix) { | ||||
| 			this.$refs.label.style.left = (this.$refs.prefix.offsetLeft + this.$refs.prefix.offsetWidth) + 'px'; | ||||
| @@ -155,9 +151,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark, fill) | ||||
| root(fill) | ||||
| 	margin 32px 0 | ||||
|  | ||||
| 	> .icon | ||||
| @@ -167,7 +161,7 @@ root(isDark, fill) | ||||
| 		width 24px | ||||
| 		text-align center | ||||
| 		line-height 32px | ||||
| 		color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54) | ||||
| 		color var(--inputLabel) | ||||
|  | ||||
| 		&:not(:empty) + .input | ||||
| 			margin-left 28px | ||||
| @@ -183,7 +177,7 @@ root(isDark, fill) | ||||
| 				left 0 | ||||
| 				right 0 | ||||
| 				height 1px | ||||
| 				background isDark ? rgba(#fff, 0.7) : rgba(#000, 0.42) | ||||
| 				background var(--inputBorder) | ||||
|  | ||||
| 			&:after | ||||
| 				content '' | ||||
| @@ -193,7 +187,7 @@ root(isDark, fill) | ||||
| 				left 0 | ||||
| 				right 0 | ||||
| 				height 2px | ||||
| 				background $theme-color | ||||
| 				background var(--primary) | ||||
| 				opacity 0 | ||||
| 				transform scaleX(0.12) | ||||
| 				transition border 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), transform 0.3s cubic-bezier(0.4, 0, 0.2, 1) | ||||
| @@ -242,7 +236,7 @@ root(isDark, fill) | ||||
| 			transition-duration 0.3s | ||||
| 			font-size 16px | ||||
| 			line-height 32px | ||||
| 			color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54) | ||||
| 			color var(--inputLabel) | ||||
| 			pointer-events none | ||||
| 			//will-change transform | ||||
| 			transform-origin top left | ||||
| @@ -257,7 +251,7 @@ root(isDark, fill) | ||||
| 			font-weight fill ? bold : normal | ||||
| 			font-size 16px | ||||
| 			line-height 32px | ||||
| 			color isDark ? #fff : #000 | ||||
| 			color var(--inputText) | ||||
| 			background transparent | ||||
| 			border none | ||||
| 			border-radius 0 | ||||
| @@ -280,7 +274,7 @@ root(isDark, fill) | ||||
| 			top 0 | ||||
| 			font-size 16px | ||||
| 			line-height fill ? 44px : 32px | ||||
| 			color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54) | ||||
| 			color var(--inputLabel) | ||||
| 			pointer-events none | ||||
|  | ||||
| 			&:empty | ||||
| @@ -325,7 +319,7 @@ root(isDark, fill) | ||||
| 					transform scaleX(1) | ||||
|  | ||||
| 			> .label | ||||
| 				color $theme-color | ||||
| 				color var(--primary) | ||||
|  | ||||
| 	&.focused | ||||
| 	&.filled | ||||
| @@ -335,16 +329,10 @@ root(isDark, fill) | ||||
| 				left 0 !important | ||||
| 				transform scale(0.75) | ||||
|  | ||||
| .ui-input[data-darkmode] | ||||
| .ui-input | ||||
| 	&.fill | ||||
| 		root(true, true) | ||||
| 		root(true) | ||||
| 	&:not(.fill) | ||||
| 		root(true, false) | ||||
|  | ||||
| .ui-input:not([data-darkmode]) | ||||
| 	&.fill | ||||
| 		root(false, true) | ||||
| 	&:not(.fill) | ||||
| 		root(false, false) | ||||
| 		root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -51,9 +51,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .ui-radio | ||||
| 	display inline-block | ||||
| 	margin 0 32px 0 0 | ||||
| 	cursor pointer | ||||
| @@ -68,10 +66,10 @@ root(isDark) | ||||
|  | ||||
| 	&.checked | ||||
| 		> .button | ||||
| 			border-color $theme-color | ||||
| 			border-color var(--primary) | ||||
|  | ||||
| 			&:after | ||||
| 				background-color $theme-color | ||||
| 				background-color var(--primary) | ||||
| 				transform scale(1) | ||||
| 				opacity 1 | ||||
|  | ||||
| @@ -87,7 +85,7 @@ root(isDark) | ||||
| 		width 20px | ||||
| 		height 20px | ||||
| 		background none | ||||
| 		border solid 2px isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54) | ||||
| 		border solid 2px var(--inputLabel) | ||||
| 		border-radius 100% | ||||
| 		transition inherit | ||||
|  | ||||
| @@ -111,10 +109,4 @@ root(isDark) | ||||
| 		line-height 20px | ||||
| 		cursor pointer | ||||
|  | ||||
| .ui-radio[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .ui-radio:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -29,13 +29,17 @@ export default Vue.extend({ | ||||
| 		required: { | ||||
| 			type: Boolean, | ||||
| 			required: false | ||||
| 		}, | ||||
| 		styl: { | ||||
| 			type: String, | ||||
| 			required: false, | ||||
| 			default: 'line' | ||||
| 		} | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			v: this.value, | ||||
| 			focused: false, | ||||
| 			styl: 'fill' | ||||
| 			focused: false | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| @@ -48,14 +52,6 @@ export default Vue.extend({ | ||||
| 			this.v = v; | ||||
| 		} | ||||
| 	}, | ||||
| 	inject: { | ||||
| 		isCardChild: { default: false } | ||||
| 	}, | ||||
| 	created() { | ||||
| 		if (this.isCardChild) { | ||||
| 			this.styl = 'line'; | ||||
| 		} | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		if (this.$refs.prefix) { | ||||
| 			this.$refs.label.style.left = (this.$refs.prefix.offsetLeft + this.$refs.prefix.offsetWidth) + 'px'; | ||||
| @@ -70,9 +66,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark, fill) | ||||
| root(fill) | ||||
| 	margin 32px 0 | ||||
|  | ||||
| 	> .icon | ||||
| @@ -103,7 +97,7 @@ root(isDark, fill) | ||||
| 				left 0 | ||||
| 				right 0 | ||||
| 				height 1px | ||||
| 				background isDark ? rgba(#fff, 0.7) : rgba(#000, 0.42) | ||||
| 				background var(--inputBorder) | ||||
|  | ||||
| 			&:after | ||||
| 				content '' | ||||
| @@ -113,7 +107,7 @@ root(isDark, fill) | ||||
| 				left 0 | ||||
| 				right 0 | ||||
| 				height 2px | ||||
| 				background $theme-color | ||||
| 				background var(--primary) | ||||
| 				opacity 0 | ||||
| 				transform scaleX(0.12) | ||||
| 				transition border 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), transform 0.3s cubic-bezier(0.4, 0, 0.2, 1) | ||||
| @@ -143,7 +137,7 @@ root(isDark, fill) | ||||
| 			font-weight fill ? bold : normal | ||||
| 			font-size 16px | ||||
| 			height 32px | ||||
| 			color isDark ? #fff : #000 | ||||
| 			color var(--inputText) | ||||
| 			background transparent | ||||
| 			border none | ||||
| 			border-radius 0 | ||||
| @@ -190,7 +184,7 @@ root(isDark, fill) | ||||
| 					transform scaleX(1) | ||||
|  | ||||
| 			> .label | ||||
| 				color $theme-color | ||||
| 				color var(--primary) | ||||
|  | ||||
| 	&.focused | ||||
| 	&.filled | ||||
| @@ -200,16 +194,10 @@ root(isDark, fill) | ||||
| 				left 0 !important | ||||
| 				transform scale(0.75) | ||||
|  | ||||
| .ui-select[data-darkmode] | ||||
| .ui-select | ||||
| 	&.fill | ||||
| 		root(true, true) | ||||
| 		root(true) | ||||
| 	&:not(.fill) | ||||
| 		root(true, false) | ||||
|  | ||||
| .ui-select:not([data-darkmode]) | ||||
| 	&.fill | ||||
| 		root(false, true) | ||||
| 	&:not(.fill) | ||||
| 		root(false, false) | ||||
| 		root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -19,7 +19,7 @@ | ||||
| 	<span class="label"> | ||||
| 		<span :aria-hidden="!checked"><slot></slot></span> | ||||
| 		<p :aria-hidden="!checked"> | ||||
| 			<slot name="text"></slot> | ||||
| 			<slot name="desc"></slot> | ||||
| 		</p> | ||||
| 	</span> | ||||
| </div> | ||||
| @@ -56,9 +56,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .ui-switch | ||||
| 	display flex | ||||
| 	margin 32px 0 | ||||
| 	cursor pointer | ||||
| @@ -79,11 +77,11 @@ root(isDark) | ||||
|  | ||||
| 	&.checked | ||||
| 		> .button | ||||
| 			background-color rgba($theme-color, 0.4) | ||||
| 			border-color rgba($theme-color, 0.4) | ||||
| 			background-color var(--primaryAlpha04) | ||||
| 			border-color var(--primaryAlpha04) | ||||
|  | ||||
| 			> * | ||||
| 				background-color $theme-color | ||||
| 				background-color var(--primary) | ||||
| 				transform translateX(14px) | ||||
|  | ||||
| 	> input | ||||
| @@ -99,7 +97,7 @@ root(isDark) | ||||
| 		margin 3px 0 0 0 | ||||
| 		width 34px | ||||
| 		height 14px | ||||
| 		background isDark ? rgba(#fff, 0.15) : rgba(#000, 0.25) | ||||
| 		background var(--switchTrack) | ||||
| 		outline none | ||||
| 		border-radius 14px | ||||
| 		transition inherit | ||||
| @@ -125,18 +123,11 @@ root(isDark) | ||||
| 		> span | ||||
| 			display block | ||||
| 			line-height 20px | ||||
| 			color isDark ? #c4ccd2 : rgba(#000, 0.75) | ||||
| 			color currentColor | ||||
| 			transition inherit | ||||
|  | ||||
| 		> p | ||||
| 			margin 0 | ||||
| 			//font-size 90% | ||||
| 			color isDark ? #78858e : #9daab3 | ||||
|  | ||||
| .ui-switch[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .ui-switch:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 			opacity 0.7 | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -63,9 +63,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark, fill) | ||||
| root(fill) | ||||
| 	margin 42px 0 32px 0 | ||||
|  | ||||
| 	> .input | ||||
| @@ -84,7 +82,7 @@ root(isDark, fill) | ||||
| 				left 0 | ||||
| 				right 0 | ||||
| 				background none | ||||
| 				border solid 1px isDark ? rgba(#fff, 0.7) : rgba(#000, 0.42) | ||||
| 				border solid 1px var(--inputBorder) | ||||
| 				border-radius 3px | ||||
| 				pointer-events none | ||||
|  | ||||
| @@ -97,7 +95,7 @@ root(isDark, fill) | ||||
| 				left 0 | ||||
| 				right 0 | ||||
| 				background none | ||||
| 				border solid 2px $theme-color | ||||
| 				border solid 2px var(--primary) | ||||
| 				border-radius 3px | ||||
| 				opacity 0 | ||||
| 				transition opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1) | ||||
| @@ -112,7 +110,7 @@ root(isDark, fill) | ||||
| 			transition-duration 0.3s | ||||
| 			font-size 16px | ||||
| 			line-height 32px | ||||
| 			color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54) | ||||
| 			color var(--inputLabel) | ||||
| 			pointer-events none | ||||
| 			//will-change transform | ||||
| 			transform-origin top left | ||||
| @@ -126,7 +124,7 @@ root(isDark, fill) | ||||
| 			font inherit | ||||
| 			font-weight fill ? bold : normal | ||||
| 			font-size 16px | ||||
| 			color isDark ? #fff : #000 | ||||
| 			color var(--inputText) | ||||
| 			background transparent | ||||
| 			border none | ||||
| 			border-radius 0 | ||||
| @@ -149,7 +147,7 @@ root(isDark, fill) | ||||
| 					opacity 1 | ||||
|  | ||||
| 			> .label | ||||
| 				color $theme-color | ||||
| 				color var(--primary) | ||||
|  | ||||
| 	&.focused | ||||
| 	&.filled | ||||
| @@ -159,16 +157,10 @@ root(isDark, fill) | ||||
| 				left 0 !important | ||||
| 				transform scale(0.75) | ||||
|  | ||||
| .ui-textarea[data-darkmode] | ||||
| 	&.fill | ||||
| 		root(true, true) | ||||
| 	&:not(.fill) | ||||
| 		root(true, false) | ||||
| .ui-textarea.fill | ||||
| 	root(true) | ||||
|  | ||||
| .ui-textarea:not([data-darkmode]) | ||||
| 	&.fill | ||||
| 		root(false, true) | ||||
| 	&:not(.fill) | ||||
| 		root(false, false) | ||||
| .ui-textarea:not(.fill) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -81,7 +81,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .mk-uploader | ||||
| 	overflow auto | ||||
| @@ -100,7 +100,7 @@ export default Vue.extend({ | ||||
| 			margin 8px 0 0 0 | ||||
| 			padding 0 | ||||
| 			height 36px | ||||
| 			box-shadow 0 -1px 0 rgba($theme-color, 0.1) | ||||
| 			box-shadow 0 -1px 0 var(--primaryAlpha01) | ||||
| 			border-top solid 8px transparent | ||||
|  | ||||
| 			&:first-child | ||||
| @@ -127,7 +127,7 @@ export default Vue.extend({ | ||||
| 				padding 0 | ||||
| 				max-width 256px | ||||
| 				font-size 0.8em | ||||
| 				color rgba($theme-color, 0.7) | ||||
| 				color var(--primaryAlpha07) | ||||
| 				white-space nowrap | ||||
| 				text-overflow ellipsis | ||||
| 				overflow hidden | ||||
| @@ -145,17 +145,17 @@ export default Vue.extend({ | ||||
| 				font-size 0.8em | ||||
|  | ||||
| 				> .initing | ||||
| 					color rgba($theme-color, 0.5) | ||||
| 					color var(--primaryAlpha05) | ||||
|  | ||||
| 				> .kb | ||||
| 					color rgba($theme-color, 0.5) | ||||
| 					color var(--primaryAlpha05) | ||||
|  | ||||
| 				> .percentage | ||||
| 					display inline-block | ||||
| 					width 48px | ||||
| 					text-align right | ||||
|  | ||||
| 					color rgba($theme-color, 0.7) | ||||
| 					color var(--primaryAlpha07) | ||||
|  | ||||
| 					&:after | ||||
| 						content '%' | ||||
| @@ -174,10 +174,10 @@ export default Vue.extend({ | ||||
| 				overflow hidden | ||||
|  | ||||
| 				&::-webkit-progress-value | ||||
| 					background $theme-color | ||||
| 					background var(--primary) | ||||
|  | ||||
| 				&::-webkit-progress-bar | ||||
| 					background rgba($theme-color, 0.1) | ||||
| 					background var(--primaryAlpha01) | ||||
|  | ||||
| 			> .progress | ||||
| 				display block | ||||
| @@ -191,13 +191,13 @@ export default Vue.extend({ | ||||
| 				border-radius 4px | ||||
| 				background linear-gradient( | ||||
| 					45deg, | ||||
| 					lighten($theme-color, 30%) 25%, | ||||
| 					$theme-color               25%, | ||||
| 					$theme-color               50%, | ||||
| 					lighten($theme-color, 30%) 50%, | ||||
| 					lighten($theme-color, 30%) 75%, | ||||
| 					$theme-color               75%, | ||||
| 					$theme-color | ||||
| 					var(--primaryLighten30) 25%, | ||||
| 					var(--primary)               25%, | ||||
| 					var(--primary)               50%, | ||||
| 					var(--primaryLighten30) 50%, | ||||
| 					var(--primaryLighten30) 75%, | ||||
| 					var(--primary)               75%, | ||||
| 					var(--primary) | ||||
| 				) | ||||
| 				background-size 32px 32px | ||||
| 				animation bg 1.5s linear infinite | ||||
|   | ||||
| @@ -200,17 +200,17 @@ export default Vue.extend({ | ||||
| 		top 0 | ||||
| 		width 100% | ||||
|  | ||||
| root(isDark) | ||||
| .mk-url-preview | ||||
| 	> a | ||||
| 		display block | ||||
| 		font-size 14px | ||||
| 		border solid 1px isDark ? #191b1f : #eee | ||||
| 		border solid 1px var(--urlPreviewBorder) | ||||
| 		border-radius 4px | ||||
| 		overflow hidden | ||||
|  | ||||
| 		&:hover | ||||
| 			text-decoration none | ||||
| 			border-color isDark ? #4f5561 : #ddd | ||||
| 			border-color var(--urlPreviewBorderHover) | ||||
|  | ||||
| 			> article > header > h1 | ||||
| 				text-decoration underline | ||||
| @@ -235,11 +235,11 @@ root(isDark) | ||||
| 				> h1 | ||||
| 					margin 0 | ||||
| 					font-size 1em | ||||
| 					color isDark ? #d6dae0 : #555 | ||||
| 					color var(--urlPreviewTitle) | ||||
|  | ||||
| 			> p | ||||
| 				margin 0 | ||||
| 				color isDark ? #a4aab3 : #777 | ||||
| 				color var(--urlPreviewText) | ||||
| 				font-size 0.8em | ||||
|  | ||||
| 			> footer | ||||
| @@ -256,7 +256,7 @@ root(isDark) | ||||
| 				> p | ||||
| 					display inline-block | ||||
| 					margin 0 | ||||
| 					color isDark ? #b0b4bf : #666 | ||||
| 					color var(--urlPreviewInfo) | ||||
| 					font-size 0.8em | ||||
| 					line-height 16px | ||||
| 					vertical-align top | ||||
| @@ -322,10 +322,4 @@ root(isDark) | ||||
| 						width 12px | ||||
| 						height 12px | ||||
|  | ||||
| .mk-url-preview[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-url-preview:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -127,11 +127,9 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| $border-color = rgba(27, 31, 35, 0.15) | ||||
|  | ||||
| root(isDark) | ||||
| .mk-visibility-chooser | ||||
| 	position initial | ||||
|  | ||||
| 	> .backdrop | ||||
| @@ -141,11 +139,11 @@ root(isDark) | ||||
| 		z-index 10000 | ||||
| 		width 100% | ||||
| 		height 100% | ||||
| 		background isDark ? rgba(#000, 0.4) : rgba(#000, 0.1) | ||||
| 		background var(--modalBackdrop) | ||||
| 		opacity 0 | ||||
|  | ||||
| 	> .popover | ||||
| 		$bgcolor = isDark ? #2c303c : #fff | ||||
| 		$bgcolor = var(--popupBg) | ||||
| 		position absolute | ||||
| 		z-index 10001 | ||||
| 		width 240px | ||||
| @@ -189,18 +187,18 @@ root(isDark) | ||||
| 			display flex | ||||
| 			padding 8px 14px | ||||
| 			font-size 12px | ||||
| 			color isDark ? #fff : #666 | ||||
| 			color var(--popupFg) | ||||
| 			cursor pointer | ||||
|  | ||||
| 			&:hover | ||||
| 				background isDark ? #252731 : #eee | ||||
| 				background var(--faceClearButtonHover) | ||||
|  | ||||
| 			&:active | ||||
| 				background isDark ? #21242b : #ddd | ||||
| 				background var(--faceClearButtonActive) | ||||
|  | ||||
| 			&.active | ||||
| 				color $theme-color-foreground | ||||
| 				background $theme-color | ||||
| 				color var(--primaryForeground) | ||||
| 				background var(--primary) | ||||
|  | ||||
| 			> * | ||||
| 				user-select none | ||||
| @@ -222,11 +220,4 @@ root(isDark) | ||||
|  | ||||
| 				> span:last-child:not(:first-child) | ||||
| 					opacity 0.6 | ||||
|  | ||||
| .mk-visibility-chooser[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-visibility-chooser:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -90,8 +90,8 @@ export default Vue.extend({ | ||||
| 	opacity 0 | ||||
| 	transform translateY(-30px) | ||||
|  | ||||
| root(isDark) | ||||
| 	background isDark ? #282C37 : #fff | ||||
| .mk-welcome-timeline | ||||
| 	background var(--face) | ||||
|  | ||||
| 	> div | ||||
| 		> * | ||||
| @@ -101,8 +101,8 @@ root(isDark) | ||||
| 			padding 16px | ||||
| 			overflow-wrap break-word | ||||
| 			font-size .9em | ||||
| 			color isDark ? #fff : #4C4C4C | ||||
| 			border-bottom 1px solid isDark ? rgba(#000, 0.1) : rgba(#000, 0.05) | ||||
| 			color var(--noteText) | ||||
| 			border-bottom 1px solid var(--faceDivider) | ||||
|  | ||||
| 			&:after | ||||
| 				content "" | ||||
| @@ -137,26 +137,20 @@ root(isDark) | ||||
| 						overflow hidden | ||||
| 						font-weight bold | ||||
| 						text-overflow ellipsis | ||||
| 						color isDark ? #fff : #627079 | ||||
| 						color var(--noteHeaderName) | ||||
|  | ||||
| 					> .username | ||||
| 						margin 0 .5em 0 0 | ||||
| 						color isDark ? #606984 : #ccc | ||||
| 						color var(--noteHeaderAcct) | ||||
|  | ||||
| 					> .info | ||||
| 						margin-left auto | ||||
| 						font-size 0.9em | ||||
|  | ||||
| 						> .created-at | ||||
| 							color isDark ? #606984 : #c0c0c0 | ||||
| 							color var(--noteHeaderInfo) | ||||
|  | ||||
| 				> .text | ||||
| 					text-align left | ||||
|  | ||||
| .mk-welcome-timeline[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-welcome-timeline:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <template> | ||||
| <div class="syxhndwprovvuqhmyvveewmbqayniwkv" v-if="!fetching" :data-darkmode="$store.state.device.darkmode"> | ||||
| <div class="syxhndwprovvuqhmyvveewmbqayniwkv" v-if="!fetching"> | ||||
| 	<div class="signed-in-as" v-html="'%i18n:@signed-in-as%'.replace('{}', `<b>${myName}`)"></div> | ||||
|  | ||||
| 	<main> | ||||
| @@ -19,7 +19,8 @@ | ||||
| 			@click="onClick" | ||||
| 			:disabled="followWait"> | ||||
| 		<template v-if="!followWait"> | ||||
| 			<template v-if="user.hasPendingFollowRequestFromYou">%fa:hourglass-half% %i18n:@request-pending%</template> | ||||
| 			<template v-if="user.hasPendingFollowRequestFromYou && user.isLocked">%fa:hourglass-half% %i18n:@request-pending%</template> | ||||
| 			<template v-else-if="user.hasPendingFollowRequestFromYou && !user.isLocked">%fa:hourglass-start% %i18n:@follow-processing%</template> | ||||
| 			<template v-else-if="user.isFollowing">%fa:minus% %i18n:@following%</template> | ||||
| 			<template v-else-if="!user.isFollowing && user.isLocked">%fa:plus% %i18n:@follow-request%</template> | ||||
| 			<template v-else-if="!user.isFollowing && !user.isLocked">%fa:plus% %i18n:@follow%</template> | ||||
| @@ -107,16 +108,14 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .syxhndwprovvuqhmyvveewmbqayniwkv | ||||
| 	padding 32px | ||||
| 	max-width 500px | ||||
| 	margin 0 auto | ||||
| 	text-align center | ||||
| 	color isDark ? #9baec8 : #868c8c | ||||
| 	color var(--text) | ||||
|  | ||||
| 	$bg = isDark ? #282C37 : #fff | ||||
| 	$bg = var(--face) | ||||
|  | ||||
| 	@media (max-width 400px) | ||||
| 		padding 16px | ||||
| @@ -124,7 +123,6 @@ root(isDark) | ||||
| 	> .signed-in-as | ||||
| 		margin-bottom 16px | ||||
| 		font-size 14px | ||||
| 		color isDark ? #9baec8 : #9daab3 | ||||
|  | ||||
| 	> main | ||||
| 		margin-bottom 16px | ||||
| @@ -173,29 +171,29 @@ root(isDark) | ||||
| 		min-width 150px | ||||
| 		font-size 14px | ||||
| 		font-weight bold | ||||
| 		color $theme-color | ||||
| 		color var(--primary) | ||||
| 		background transparent | ||||
| 		outline none | ||||
| 		border solid 1px $theme-color | ||||
| 		border solid 1px var(--primary) | ||||
| 		border-radius 36px | ||||
|  | ||||
| 		&:hover | ||||
| 			background rgba($theme-color, 0.1) | ||||
| 			background var(--primaryAlpha01) | ||||
|  | ||||
| 		&:active | ||||
| 			background rgba($theme-color, 0.2) | ||||
| 			background var(--primaryAlpha02) | ||||
|  | ||||
| 		&.active | ||||
| 			color $theme-color-foreground | ||||
| 			background $theme-color | ||||
| 			color var(--primaryForeground) | ||||
| 			background var(--primary) | ||||
|  | ||||
| 			&:hover | ||||
| 				background lighten($theme-color, 10%) | ||||
| 				border-color lighten($theme-color, 10%) | ||||
| 				background var(--primaryLighten10) | ||||
| 				border-color var(--primaryLighten10) | ||||
|  | ||||
| 			&:active | ||||
| 				background darken($theme-color, 10%) | ||||
| 				border-color darken($theme-color, 10%) | ||||
| 				background var(--primaryDarken10) | ||||
| 				border-color var(--primaryDarken10) | ||||
|  | ||||
| 		&.wait | ||||
| 			cursor wait !important | ||||
| @@ -204,10 +202,4 @@ root(isDark) | ||||
| 		* | ||||
| 			pointer-events none | ||||
|  | ||||
| .syxhndwprovvuqhmyvveewmbqayniwkv[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .syxhndwprovvuqhmyvveewmbqayniwkv:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -26,16 +26,8 @@ export default define({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mkw-analog-clock | ||||
| 	.mkw-analog-clock--body | ||||
| 		padding 8px | ||||
|  | ||||
| .mkw-analog-clock[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mkw-analog-clock:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -1,25 +1,29 @@ | ||||
| <template> | ||||
| <div class="anltbovirfeutcigvwgmgxipejaeozxi" | ||||
| 	:data-found="announcements && announcements.length != 0" | ||||
| 	:data-melt="props.design == 1" | ||||
| 	:data-mobile="platform == 'mobile'" | ||||
| > | ||||
| 	<div class="icon"> | ||||
| 		<svg height="32" version="1.1" viewBox="0 0 32 32" width="32"> | ||||
| 			<path class="tower" d="M16.04,11.24c1.79,0,3.239-1.45,3.239-3.24S17.83,4.76,16.04,4.76c-1.79,0-3.24,1.45-3.24,3.24 C12.78,9.78,14.24,11.24,16.04,11.24z M16.04,13.84c-0.82,0-1.66-0.2-2.4-0.6L7.34,29.98h2.98l1.72-2h8l1.681,2H24.7L18.42,13.24 C17.66,13.64,16.859,13.84,16.04,13.84z M16.02,14.8l2.02,7.2h-4L16.02,14.8z M12.04,25.98l2-2h4l2,2H12.04z"></path> | ||||
| 			<path class="wave a" d="M4.66,1.04c-0.508-0.508-1.332-0.508-1.84,0c-1.86,1.92-2.8,4.44-2.8,6.94c0,2.52,0.94,5.04,2.8,6.96 c0.5,0.52,1.32,0.52,1.82,0s0.5-1.36,0-1.88C3.28,11.66,2.6,9.82,2.6,7.98S3.28,4.3,4.64,2.9C5.157,2.391,5.166,1.56,4.66,1.04z"></path> | ||||
| 			<path class="wave b" d="M9.58,12.22c0.5-0.5,0.5-1.34,0-1.84C8.94,9.72,8.62,8.86,8.62,8s0.32-1.72,0.96-2.38c0.5-0.52,0.5-1.34,0-1.84 C9.346,3.534,9.02,3.396,8.68,3.4c-0.32,0-0.66,0.12-0.9,0.38C6.64,4.94,6.08,6.48,6.08,8s0.58,3.06,1.7,4.22 C8.28,12.72,9.1,12.72,9.58,12.22z"></path> | ||||
| 			<path class="wave c" d="M22.42,3.78c-0.5,0.5-0.5,1.34,0,1.84c0.641,0.66,0.96,1.52,0.96,2.38s-0.319,1.72-0.96,2.38c-0.5,0.52-0.5,1.34,0,1.84 c0.487,0.497,1.285,0.505,1.781,0.018c0.007-0.006,0.013-0.012,0.02-0.018c1.139-1.16,1.699-2.7,1.699-4.22s-0.561-3.06-1.699-4.22 c-0.494-0.497-1.297-0.5-1.794-0.007C22.424,3.775,22.422,3.778,22.42,3.78z"></path> | ||||
| 			<path class="wave d" d="M29.18,1.06c-0.479-0.502-1.273-0.522-1.775-0.044c-0.016,0.015-0.029,0.029-0.045,0.044c-0.5,0.52-0.5,1.36,0,1.88 c1.361,1.4,2.041,3.24,2.041,5.08s-0.68,3.66-2.041,5.08c-0.5,0.52-0.5,1.36,0,1.88c0.509,0.508,1.332,0.508,1.841,0 c1.86-1.92,2.8-4.44,2.8-6.96C31.99,5.424,30.98,2.931,29.18,1.06z"></path> | ||||
| 		</svg> | ||||
| 	</div> | ||||
| 	<p class="fetching" v-if="fetching">%i18n:@fetching%<mk-ellipsis/></p> | ||||
| 	<h1 v-if="!fetching">{{ announcements.length == 0 ? '%i18n:@no-broadcasts%' : announcements[i].title }}</h1> | ||||
| 	<p v-if="!fetching"> | ||||
| 		<span v-if="announcements.length != 0" v-html="announcements[i].text"></span> | ||||
| 		<template v-if="announcements.length == 0">%i18n:@have-a-nice-day%</template> | ||||
| 	</p> | ||||
| 	<a v-if="announcements.length > 1" @click="next">%i18n:@next% >></a> | ||||
| <div class="anltbovirfeutcigvwgmgxipejaeozxi"> | ||||
| 	<mk-widget-container :show-header="false" :naked="props.design == 1"> | ||||
| 		<div class="anltbovirfeutcigvwgmgxipejaeozxi-body" | ||||
| 			:data-found="announcements && announcements.length != 0" | ||||
| 			:data-melt="props.design == 1" | ||||
| 			:data-mobile="platform == 'mobile'" | ||||
| 		> | ||||
| 			<div class="icon"> | ||||
| 				<svg height="32" version="1.1" viewBox="0 0 32 32" width="32"> | ||||
| 					<path class="tower" d="M16.04,11.24c1.79,0,3.239-1.45,3.239-3.24S17.83,4.76,16.04,4.76c-1.79,0-3.24,1.45-3.24,3.24 C12.78,9.78,14.24,11.24,16.04,11.24z M16.04,13.84c-0.82,0-1.66-0.2-2.4-0.6L7.34,29.98h2.98l1.72-2h8l1.681,2H24.7L18.42,13.24 C17.66,13.64,16.859,13.84,16.04,13.84z M16.02,14.8l2.02,7.2h-4L16.02,14.8z M12.04,25.98l2-2h4l2,2H12.04z"></path> | ||||
| 					<path class="wave a" d="M4.66,1.04c-0.508-0.508-1.332-0.508-1.84,0c-1.86,1.92-2.8,4.44-2.8,6.94c0,2.52,0.94,5.04,2.8,6.96 c0.5,0.52,1.32,0.52,1.82,0s0.5-1.36,0-1.88C3.28,11.66,2.6,9.82,2.6,7.98S3.28,4.3,4.64,2.9C5.157,2.391,5.166,1.56,4.66,1.04z"></path> | ||||
| 					<path class="wave b" d="M9.58,12.22c0.5-0.5,0.5-1.34,0-1.84C8.94,9.72,8.62,8.86,8.62,8s0.32-1.72,0.96-2.38c0.5-0.52,0.5-1.34,0-1.84 C9.346,3.534,9.02,3.396,8.68,3.4c-0.32,0-0.66,0.12-0.9,0.38C6.64,4.94,6.08,6.48,6.08,8s0.58,3.06,1.7,4.22 C8.28,12.72,9.1,12.72,9.58,12.22z"></path> | ||||
| 					<path class="wave c" d="M22.42,3.78c-0.5,0.5-0.5,1.34,0,1.84c0.641,0.66,0.96,1.52,0.96,2.38s-0.319,1.72-0.96,2.38c-0.5,0.52-0.5,1.34,0,1.84 c0.487,0.497,1.285,0.505,1.781,0.018c0.007-0.006,0.013-0.012,0.02-0.018c1.139-1.16,1.699-2.7,1.699-4.22s-0.561-3.06-1.699-4.22 c-0.494-0.497-1.297-0.5-1.794-0.007C22.424,3.775,22.422,3.778,22.42,3.78z"></path> | ||||
| 					<path class="wave d" d="M29.18,1.06c-0.479-0.502-1.273-0.522-1.775-0.044c-0.016,0.015-0.029,0.029-0.045,0.044c-0.5,0.52-0.5,1.36,0,1.88 c1.361,1.4,2.041,3.24,2.041,5.08s-0.68,3.66-2.041,5.08c-0.5,0.52-0.5,1.36,0,1.88c0.509,0.508,1.332,0.508,1.841,0 c1.86-1.92,2.8-4.44,2.8-6.96C31.99,5.424,30.98,2.931,29.18,1.06z"></path> | ||||
| 				</svg> | ||||
| 			</div> | ||||
| 			<p class="fetching" v-if="fetching">%i18n:@fetching%<mk-ellipsis/></p> | ||||
| 			<h1 v-if="!fetching">{{ announcements.length == 0 ? '%i18n:@no-broadcasts%' : announcements[i].title }}</h1> | ||||
| 			<p v-if="!fetching"> | ||||
| 				<span v-if="announcements.length != 0" v-html="announcements[i].text"></span> | ||||
| 				<template v-if="announcements.length == 0">%i18n:@have-a-nice-day%</template> | ||||
| 			</p> | ||||
| 			<a v-if="announcements.length > 1" @click="next">%i18n:@next% >></a> | ||||
| 		</div> | ||||
| 	</mk-widget-container> | ||||
| </div> | ||||
| </template> | ||||
|  | ||||
| @@ -66,13 +70,12 @@ export default define({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .anltbovirfeutcigvwgmgxipejaeozxi-body | ||||
| 	padding 10px | ||||
| 	border solid 1px #4078c0 | ||||
| 	border-radius 6px | ||||
| 	background var(--announcementsBg) | ||||
|  | ||||
| 	&[data-melt] | ||||
| 		border none | ||||
| 		background transparent | ||||
|  | ||||
| 	&[data-found] | ||||
| 		padding-left 50px | ||||
| @@ -126,14 +129,14 @@ root(isDark) | ||||
| 		margin 0 | ||||
| 		font-size 0.95em | ||||
| 		font-weight normal | ||||
| 		color isDark ? #539eff : #4078c0 | ||||
| 		color var(--announcementsTitle) | ||||
|  | ||||
| 	> p | ||||
| 		display block | ||||
| 		z-index 1 | ||||
| 		margin 0 | ||||
| 		font-size 0.7em | ||||
| 		color isDark ? #fff : #555 | ||||
| 		color var(--announcementsText) | ||||
|  | ||||
| 		&.fetching | ||||
| 			text-align center | ||||
| @@ -146,10 +149,4 @@ root(isDark) | ||||
| 		> p | ||||
| 			color #fff | ||||
|  | ||||
| .anltbovirfeutcigvwgmgxipejaeozxi[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .anltbovirfeutcigvwgmgxipejaeozxi:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -116,15 +116,13 @@ export default define({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mkw-calendar | ||||
| 	&[data-special='on-new-years-day'] | ||||
| 		border-color #ef95a0 | ||||
|  | ||||
| 	.mkw-calendar--body | ||||
| 		padding 16px 0 | ||||
| 		color isDark ? #c5ced6 : #777 | ||||
| 		color var(--calendarDay) | ||||
|  | ||||
| 		&:after | ||||
| 			content "" | ||||
| @@ -169,7 +167,8 @@ root(isDark) | ||||
| 					margin 0 0 2px 0 | ||||
| 					font-size 12px | ||||
| 					line-height 18px | ||||
| 					color isDark ? #7a8692 : #888 | ||||
| 					color var(--text) | ||||
| 					opacity 0.8 | ||||
|  | ||||
| 					> b | ||||
| 						margin-left 2px | ||||
| @@ -177,12 +176,12 @@ root(isDark) | ||||
| 				> .meter | ||||
| 					width 100% | ||||
| 					overflow hidden | ||||
| 					background isDark ? #1c1f25 : #eee | ||||
| 					background var(--materBg) | ||||
| 					border-radius 8px | ||||
|  | ||||
| 					> .val | ||||
| 						height 4px | ||||
| 						background $theme-color | ||||
| 						background var(--primary) | ||||
| 						transition width .3s cubic-bezier(0.23, 1, 0.32, 1) | ||||
|  | ||||
| 				&:nth-child(1) | ||||
| @@ -197,10 +196,4 @@ root(isDark) | ||||
| 					> .meter > .val | ||||
| 						background #41ddde | ||||
|  | ||||
| .mkw-calendar[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mkw-calendar:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -1,13 +1,15 @@ | ||||
| <template> | ||||
| <div class="mkw-donation" :data-mobile="platform == 'mobile'"> | ||||
| 	<article> | ||||
| 		<h1>%fa:heart%%i18n:@title%</h1> | ||||
| 		<p v-if="meta"> | ||||
| 			{{ '%i18n:@text%'.substr(0, '%i18n:@text%'.indexOf('{')) }} | ||||
| 			<a :href="meta.maintainer.url">{{ meta.maintainer.name }}</a> | ||||
| 			{{ '%i18n:@text%'.substr('%i18n:@text%'.indexOf('}') + 1) }} | ||||
| 		</p> | ||||
| 	</article> | ||||
| <div> | ||||
| 	<mk-widget-container :show-header="false"> | ||||
| 		<article class="dolfvtibguprpxxhfndqaosjitixjohx"> | ||||
| 			<h1>%fa:heart%%i18n:@title%</h1> | ||||
| 			<p v-if="meta"> | ||||
| 				{{ '%i18n:@text%'.substr(0, '%i18n:@text%'.indexOf('{')) }} | ||||
| 				<a :href="meta.maintainer.url">{{ meta.maintainer.name }}</a> | ||||
| 				{{ '%i18n:@text%'.substr('%i18n:@text%'.indexOf('}') + 1) }} | ||||
| 			</p> | ||||
| 		</article> | ||||
| 	</mk-widget-container> | ||||
| </div> | ||||
| </template> | ||||
|  | ||||
| @@ -30,46 +32,22 @@ export default define({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| 	background isDark ? #282c37 : #fff | ||||
| 	border solid 1px isDark ? #c3831c : #ead8bb | ||||
| 	border-radius 6px | ||||
| .dolfvtibguprpxxhfndqaosjitixjohx | ||||
| 	padding 20px | ||||
| 	background var(--donationBg) | ||||
| 	color var(--donationFg) | ||||
|  | ||||
| 	> article | ||||
| 		padding 20px | ||||
| 	> h1 | ||||
| 		margin 0 0 5px 0 | ||||
| 		font-size 1em | ||||
|  | ||||
| 		> h1 | ||||
| 			margin 0 0 5px 0 | ||||
| 			font-size 1em | ||||
| 			color isDark ? #b2bac1 : #888 | ||||
| 		> [data-fa] | ||||
| 			margin-right 0.25em | ||||
|  | ||||
| 			> [data-fa] | ||||
| 				margin-right 0.25em | ||||
|  | ||||
| 		> p | ||||
| 			display block | ||||
| 			z-index 1 | ||||
| 			margin 0 | ||||
| 			font-size 0.8em | ||||
| 			color isDark ? #a1a6ab : #999 | ||||
|  | ||||
| 	&[data-mobile] | ||||
| 		border none | ||||
| 		background #ead8bb | ||||
| 		border-radius 8px | ||||
| 		box-shadow 0 0 0 1px rgba(#000, 0.2) | ||||
|  | ||||
| 		> article | ||||
| 			> h1 | ||||
| 				color #7b8871 | ||||
|  | ||||
| 			> p | ||||
| 				color #777d71 | ||||
|  | ||||
| .mkw-donation[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mkw-donation:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 	> p | ||||
| 		display block | ||||
| 		z-index 1 | ||||
| 		margin 0 | ||||
| 		font-size 0.8em | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -57,9 +57,7 @@ export default define({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mkw-memo | ||||
| 	.mkw-memo--body | ||||
| 		padding-bottom 28px + 16px | ||||
|  | ||||
| @@ -69,10 +67,10 @@ root(isDark) | ||||
| 			max-width 100% | ||||
| 			min-width 100% | ||||
| 			padding 16px | ||||
| 			color isDark ? #fff : #222 | ||||
| 			background isDark ? #282c37 : #fff | ||||
| 			color var(--inputText) | ||||
| 			background var(--face) | ||||
| 			border none | ||||
| 			border-bottom solid 1px isDark ? #1c2023 : #eee | ||||
| 			border-bottom solid 1px var(--faceDivider) | ||||
| 			border-radius 0 | ||||
|  | ||||
| 		> button | ||||
| @@ -83,8 +81,8 @@ root(isDark) | ||||
| 			margin 0 | ||||
| 			padding 0 10px | ||||
| 			height 28px | ||||
| 			color $theme-color-foreground | ||||
| 			background $theme-color !important | ||||
| 			color var(--primaryForeground) | ||||
| 			background var(--primary) !important | ||||
| 			outline none | ||||
| 			border none | ||||
| 			border-radius 4px | ||||
| @@ -92,20 +90,14 @@ root(isDark) | ||||
| 			cursor pointer | ||||
|  | ||||
| 			&:hover | ||||
| 				background lighten($theme-color, 10%) !important | ||||
| 				background var(--primaryLighten10) !important | ||||
|  | ||||
| 			&:active | ||||
| 				background darken($theme-color, 10%) !important | ||||
| 				background var(--primaryDarken10) !important | ||||
| 				transition background 0s ease | ||||
|  | ||||
| 			&:disabled | ||||
| 				opacity 0.7 | ||||
| 				cursor default | ||||
|  | ||||
| .mkw-memo[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mkw-memo:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -16,23 +16,17 @@ export default define({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .mkw-nav | ||||
| 	.mkw-nav--body | ||||
| 		padding 16px | ||||
| 		font-size 12px | ||||
| 		color isDark ? #9aa4b3 : #aaa | ||||
| 		background isDark ? #282c37 : #fff | ||||
| 		color var(--text) | ||||
| 		background var(--face) | ||||
|  | ||||
| 		a | ||||
| 			color isDark ? #9aa4b3 : #999 | ||||
| 			color var(--text) | ||||
|  | ||||
| 		i | ||||
| 			color isDark ? #9aa4b3 : #ccc | ||||
|  | ||||
| .mkw-nav[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mkw-nav:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 			color var(--text) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| 		<template slot="header">%fa:chart-line%%i18n:@title%</template> | ||||
| 		<button slot="func" @click="toggle" title="%i18n:@toggle%">%fa:sort%</button> | ||||
|  | ||||
| 		<div class="qpdmibaztplkylerhdbllwcokyrfxeyj" :class="{ dual: props.view == 0 }" :data-darkmode="$store.state.device.darkmode"> | ||||
| 		<div class="qpdmibaztplkylerhdbllwcokyrfxeyj" :class="{ dual: props.view == 0 }"> | ||||
| 			<svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`" v-show="props.view != 2"> | ||||
| 				<defs> | ||||
| 					<linearGradient :id="localGradientId" x1="0" x2="0" y1="1" y2="0"> | ||||
| @@ -173,7 +173,7 @@ export default define({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .qpdmibaztplkylerhdbllwcokyrfxeyj | ||||
| 	&.dual | ||||
| 		> svg | ||||
| 			width 50% | ||||
| @@ -192,7 +192,7 @@ root(isDark) | ||||
|  | ||||
| 		> text | ||||
| 			font-size 5px | ||||
| 			fill isDark ? rgba(#fff, 0.55) : rgba(#000, 0.55) | ||||
| 			fill var(--chartCaption) | ||||
|  | ||||
| 			> tspan | ||||
| 				opacity 0.5 | ||||
| @@ -202,10 +202,4 @@ root(isDark) | ||||
| 		display block | ||||
| 		clear both | ||||
|  | ||||
| .qpdmibaztplkylerhdbllwcokyrfxeyj[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .qpdmibaztplkylerhdbllwcokyrfxeyj:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -65,7 +65,7 @@ export default define({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .mkw-rss | ||||
| 	.mkw-rss--body | ||||
| 		.feed | ||||
| 			padding 12px 16px | ||||
| @@ -74,8 +74,8 @@ root(isDark) | ||||
| 			> a | ||||
| 				display block | ||||
| 				padding 4px 0 | ||||
| 				color isDark ? #9aa4b3 : #666 | ||||
| 				border-bottom dashed 1px isDark ? #1c2023 : #eee | ||||
| 				color var(--text) | ||||
| 				border-bottom dashed 1px var(--faceDivider) | ||||
|  | ||||
| 				&:last-child | ||||
| 					border-bottom none | ||||
| @@ -90,7 +90,7 @@ root(isDark) | ||||
| 				margin-right 4px | ||||
|  | ||||
| 		&[data-mobile] | ||||
| 			background isDark ? #21242f : #f3f3f3 | ||||
| 			background var(--face) | ||||
|  | ||||
| 			.feed | ||||
| 				padding 0 | ||||
| @@ -100,12 +100,6 @@ root(isDark) | ||||
| 					border-bottom none | ||||
|  | ||||
| 					&:nth-child(even) | ||||
| 						background isDark ? rgba(#000, 0.05) : rgba(#fff, 0.7) | ||||
|  | ||||
| .mkw-rss[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mkw-rss:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 						background rgba(#000, 0.05) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -129,7 +129,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .cpu-memory | ||||
| 	> svg | ||||
| 		display block | ||||
| 		padding 10px | ||||
| @@ -144,7 +144,7 @@ root(isDark) | ||||
|  | ||||
| 		> text | ||||
| 			font-size 5px | ||||
| 			fill isDark ? rgba(#fff, 0.55) : rgba(#000, 0.55) | ||||
| 			fill var(--chartCaption) | ||||
|  | ||||
| 			> tspan | ||||
| 				opacity 0.5 | ||||
| @@ -154,10 +154,4 @@ root(isDark) | ||||
| 		display block | ||||
| 		clear both | ||||
|  | ||||
| .cpu-memory[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .cpu-memory:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -38,7 +38,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .cpu | ||||
| 	> .pie | ||||
| 		padding 10px | ||||
| 		height 100px | ||||
| @@ -52,7 +52,7 @@ root(isDark) | ||||
| 		> p | ||||
| 			margin 0 | ||||
| 			font-size 12px | ||||
| 			color isDark ? #a8b4bd : #505050 | ||||
| 			color var(--chartCaption) | ||||
|  | ||||
| 			&:first-child | ||||
| 				font-weight bold | ||||
| @@ -65,10 +65,4 @@ root(isDark) | ||||
| 		display block | ||||
| 		clear both | ||||
|  | ||||
| .cpu[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .cpu:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -46,7 +46,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .disk | ||||
| 	> .pie | ||||
| 		padding 10px | ||||
| 		height 100px | ||||
| @@ -60,7 +60,7 @@ root(isDark) | ||||
| 		> p | ||||
| 			margin 0 | ||||
| 			font-size 12px | ||||
| 			color isDark ? #a8b4bd : #505050 | ||||
| 			color var(--chartCaption) | ||||
|  | ||||
| 			&:first-child | ||||
| 				font-weight bold | ||||
| @@ -73,10 +73,4 @@ root(isDark) | ||||
| 		display block | ||||
| 		clear both | ||||
|  | ||||
| .disk[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .disk:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -46,7 +46,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .memory | ||||
| 	> .pie | ||||
| 		padding 10px | ||||
| 		height 100px | ||||
| @@ -60,7 +60,7 @@ root(isDark) | ||||
| 		> p | ||||
| 			margin 0 | ||||
| 			font-size 12px | ||||
| 			color isDark ? #a8b4bd : #505050 | ||||
| 			color var(--chartCaption) | ||||
|  | ||||
| 			&:first-child | ||||
| 				font-weight bold | ||||
| @@ -73,10 +73,4 @@ root(isDark) | ||||
| 		display block | ||||
| 		clear both | ||||
|  | ||||
| .memory[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .memory:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -45,7 +45,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| svg | ||||
| 	display block | ||||
| 	height 100% | ||||
|  | ||||
| @@ -56,12 +56,6 @@ root(isDark) | ||||
|  | ||||
| 	> text | ||||
| 		font-size 0.15px | ||||
| 		fill isDark ? rgba(#fff, 0.6) : rgba(#000, 0.6) | ||||
|  | ||||
| svg[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| svg:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 		fill var(--chartCaption) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -1,150 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
| 
 | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="512" | ||||
|    height="512" | ||||
|    viewBox="0 0 135.46667 135.46667" | ||||
|    version="1.1" | ||||
|    id="svg8" | ||||
|    inkscape:version="0.92.1 r15371" | ||||
|    sodipodi:docname="header-icon.light.svg" | ||||
|    inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\32.png" | ||||
|    inkscape:export-xdpi="6" | ||||
|    inkscape:export-ydpi="6"> | ||||
|   <defs | ||||
|      id="defs2"> | ||||
|     <inkscape:path-effect | ||||
|        effect="simplify" | ||||
|        id="path-effect5115" | ||||
|        is_visible="true" | ||||
|        steps="1" | ||||
|        threshold="0.000408163" | ||||
|        smooth_angles="360" | ||||
|        helper_size="0" | ||||
|        simplify_individual_paths="false" | ||||
|        simplify_just_coalesce="false" | ||||
|        simplifyindividualpaths="false" | ||||
|        simplifyJustCoalesce="false" /> | ||||
|     <inkscape:path-effect | ||||
|        effect="simplify" | ||||
|        id="path-effect5111" | ||||
|        is_visible="true" | ||||
|        steps="1" | ||||
|        threshold="0.000408163" | ||||
|        smooth_angles="360" | ||||
|        helper_size="0" | ||||
|        simplify_individual_paths="false" | ||||
|        simplify_just_coalesce="false" | ||||
|        simplifyindividualpaths="false" | ||||
|        simplifyJustCoalesce="false" /> | ||||
|     <inkscape:path-effect | ||||
|        effect="simplify" | ||||
|        id="path-effect5104" | ||||
|        is_visible="true" | ||||
|        steps="1" | ||||
|        threshold="0.000408163" | ||||
|        smooth_angles="360" | ||||
|        helper_size="0" | ||||
|        simplify_individual_paths="false" | ||||
|        simplify_just_coalesce="false" | ||||
|        simplifyindividualpaths="false" | ||||
|        simplifyJustCoalesce="false" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1.4142136" | ||||
|      inkscape:cx="114.309" | ||||
|      inkscape:cy="251.50613" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="g4502" | ||||
|      showgrid="true" | ||||
|      units="px" | ||||
|      inkscape:snap-bbox="true" | ||||
|      inkscape:bbox-nodes="true" | ||||
|      inkscape:snap-bbox-edge-midpoints="false" | ||||
|      inkscape:snap-smooth-nodes="true" | ||||
|      inkscape:snap-center="true" | ||||
|      inkscape:snap-page="true" | ||||
|      inkscape:window-width="1920" | ||||
|      inkscape:window-height="1027" | ||||
|      inkscape:window-x="-8" | ||||
|      inkscape:window-y="1072" | ||||
|      inkscape:window-maximized="1" | ||||
|      inkscape:snap-object-midpoints="true" | ||||
|      inkscape:snap-midpoints="true" | ||||
|      inkscape:object-paths="true" | ||||
|      fit-margin-top="0" | ||||
|      fit-margin-left="0" | ||||
|      fit-margin-right="0" | ||||
|      fit-margin-bottom="0" | ||||
|      objecttolerance="1" | ||||
|      guidetolerance="1" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-others="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid4504" | ||||
|        spacingx="4.2333334" | ||||
|        spacingy="4.2333334" | ||||
|        empcolor="#ff3fff" | ||||
|        empopacity="0.25098039" | ||||
|        empspacing="4" /> | ||||
|   </sodipodi:namedview> | ||||
|   <metadata | ||||
|      id="metadata5"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title /> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      inkscape:label="レイヤー 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-30.809093,-111.78601)"> | ||||
|     <g | ||||
|        id="g4502" | ||||
|        transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)"> | ||||
|       <g | ||||
|          style="fill:#000000;fill-opacity:1" | ||||
|          transform="translate(-1.3333333e-6,-1.3439941e-6)" | ||||
|          id="g5125"> | ||||
|         <g | ||||
|            transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)" | ||||
|            id="text4489" | ||||
|            style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||||
|            aria-label="Mi"> | ||||
|           <path | ||||
|              sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz" | ||||
|              inkscape:connector-curvature="0" | ||||
|              id="path5210" | ||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#000000;fill-opacity:1;stroke-width:0.28950602px" | ||||
|              d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" /> | ||||
|           <path | ||||
|              inkscape:connector-curvature="0" | ||||
|              id="path5212" | ||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#000000;fill-opacity:1;stroke-width:0.28950602px" | ||||
|              d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" /> | ||||
|         </g> | ||||
|       </g> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 7.0 KiB | 
| @@ -124,24 +124,24 @@ | ||||
|        id="g4502" | ||||
|        transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)"> | ||||
|       <g | ||||
|          style="fill:#ffffff;fill-opacity:1" | ||||
|          style="fill-opacity:1" | ||||
|          transform="translate(-1.3333333e-6,-1.3439941e-6)" | ||||
|          id="g5125"> | ||||
|         <g | ||||
|            transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)" | ||||
|            id="text4489" | ||||
|            style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||||
|            style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||||
|            aria-label="Mi"> | ||||
|           <path | ||||
|              sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz" | ||||
|              inkscape:connector-curvature="0" | ||||
|              id="path5210" | ||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#ffffff;fill-opacity:1;stroke-width:0.28950602px" | ||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill-opacity:1;stroke-width:0.28950602px" | ||||
|              d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" /> | ||||
|           <path | ||||
|              inkscape:connector-curvature="0" | ||||
|              id="path5212" | ||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#ffffff;fill-opacity:1;stroke-width:0.28950602px" | ||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill-opacity:1;stroke-width:0.28950602px" | ||||
|              d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" /> | ||||
|         </g> | ||||
|       </g> | ||||
| Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB | 
| @@ -29,7 +29,6 @@ import MkUser from './views/pages/user/user.vue'; | ||||
| import MkFavorites from './views/pages/favorites.vue'; | ||||
| import MkSelectDrive from './views/pages/selectdrive.vue'; | ||||
| import MkDrive from './views/pages/drive.vue'; | ||||
| import MkUserList from './views/pages/user-list.vue'; | ||||
| import MkHomeCustomize from './views/pages/home-customize.vue'; | ||||
| import MkMessagingRoom from './views/pages/messaging-room.vue'; | ||||
| import MkNote from './views/pages/note.vue'; | ||||
| @@ -63,7 +62,6 @@ init(async (launch) => { | ||||
| 			{ path: '/i/messaging/:user', component: MkMessagingRoom }, | ||||
| 			{ path: '/i/drive', component: MkDrive }, | ||||
| 			{ path: '/i/drive/folder/:folder', component: MkDrive }, | ||||
| 			{ path: '/i/lists/:list', component: MkUserList }, | ||||
| 			{ path: '/selectdrive', component: MkSelectDrive }, | ||||
| 			{ path: '/search', component: MkSearch }, | ||||
| 			{ path: '/tags/:tag', component: MkTag }, | ||||
| @@ -87,10 +85,12 @@ init(async (launch) => { | ||||
| 		updateBanner: updateBanner(os) | ||||
| 	})); | ||||
|  | ||||
| 	/** | ||||
| 	 * Fuck AD Block | ||||
| 	 */ | ||||
| 	fuckAdBlock(os); | ||||
| 	if (os.store.getters.isSignedIn) { | ||||
| 		/** | ||||
| 		 * Fuck AD Block | ||||
| 		 */ | ||||
| 		fuckAdBlock(os); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Init Notification | ||||
|   | ||||
| @@ -1,8 +1,6 @@ | ||||
| @import "../app" | ||||
| @import "../reset" | ||||
|  | ||||
| @import "./ui" | ||||
|  | ||||
| *::input-placeholder | ||||
| 	color #D8CBC5 | ||||
|  | ||||
| @@ -11,34 +9,21 @@ | ||||
|  | ||||
| html | ||||
| 	height 100% | ||||
| 	background #f7f7f7 | ||||
| 	background var(--bg) | ||||
|  | ||||
| 	&, * | ||||
| 		&::-webkit-scrollbar | ||||
| 			width 6px | ||||
| 			height 6px | ||||
|  | ||||
| 		&::-webkit-scrollbar-track | ||||
| 			background var(--scrollbarTrack) | ||||
|  | ||||
| 		&::-webkit-scrollbar-thumb | ||||
| 			background rgba(0, 0, 0, 0.2) | ||||
| 			background var(--scrollbarHandle) | ||||
|  | ||||
| 			&:hover | ||||
| 				background rgba(0, 0, 0, 0.4) | ||||
| 				background var(--scrollbarHandleHover) | ||||
|  | ||||
| 			&:active | ||||
| 				background $theme-color | ||||
|  | ||||
| 	&[data-darkmode] | ||||
| 		background #191B22 | ||||
|  | ||||
| 		&, * | ||||
| 			&::-webkit-scrollbar-track | ||||
| 				background-color #282C37 | ||||
|  | ||||
| 			&::-webkit-scrollbar-thumb | ||||
| 				background-color #454954 | ||||
|  | ||||
| 				&:hover | ||||
| 					background-color #535660 | ||||
|  | ||||
| 				&:active | ||||
| 					background-color $theme-color | ||||
| 				background var(--primary) | ||||
|   | ||||
| @@ -1,181 +0,0 @@ | ||||
| @import "../../const" | ||||
|  | ||||
| button | ||||
| 	font-family sans-serif | ||||
|  | ||||
| 	* | ||||
| 		pointer-events none | ||||
|  | ||||
| button.ui | ||||
| .button.ui | ||||
| 	display inline-block | ||||
| 	cursor pointer | ||||
| 	padding 0 14px | ||||
| 	margin 0 | ||||
| 	min-width 100px | ||||
| 	line-height 38px | ||||
| 	font-size 14px | ||||
| 	color #888 | ||||
| 	text-decoration none | ||||
| 	background linear-gradient(to bottom, #ffffff 0%, #f5f5f5 100%) | ||||
| 	border solid 1px #e2e2e2 | ||||
| 	border-radius 4px | ||||
| 	outline none | ||||
|  | ||||
| 	&.block | ||||
| 		display block | ||||
|  | ||||
| 	&:focus | ||||
| 		&:after | ||||
| 			content "" | ||||
| 			pointer-events none | ||||
| 			position absolute | ||||
| 			top -5px | ||||
| 			right -5px | ||||
| 			bottom -5px | ||||
| 			left -5px | ||||
| 			border 2px solid rgba($theme-color, 0.3) | ||||
| 			border-radius 8px | ||||
|  | ||||
| 	&:disabled | ||||
| 		opacity 0.7 | ||||
| 		cursor default | ||||
|  | ||||
| 	&:hover | ||||
| 		background linear-gradient(to bottom, #f9f9f9 0%, #ececec 100%) | ||||
| 		border-color #dcdcdc | ||||
|  | ||||
| 	&:active | ||||
| 		background #ececec | ||||
| 		border-color #dcdcdc | ||||
|  | ||||
| 	&.primary | ||||
| 		color $theme-color-foreground | ||||
| 		background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%) | ||||
| 		border solid 1px lighten($theme-color, 15%) | ||||
|  | ||||
| 		&:not(:disabled) | ||||
| 			font-weight bold | ||||
|  | ||||
| 		&:hover:not(:disabled) | ||||
| 			background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%) | ||||
| 			border-color $theme-color | ||||
|  | ||||
| 		&:active:not(:disabled) | ||||
| 			background $theme-color | ||||
| 			border-color $theme-color | ||||
|  | ||||
| input:not([type]).ui | ||||
| input[type='text'].ui | ||||
| input[type='password'].ui | ||||
| input[type='email'].ui | ||||
| input[type='date'].ui | ||||
| input[type='number'].ui | ||||
| textarea.ui | ||||
| 	display block | ||||
| 	padding 10px | ||||
| 	width 100% | ||||
| 	height 40px | ||||
| 	font-family sans-serif | ||||
| 	font-size 16px | ||||
| 	color #55595c | ||||
| 	border solid 1px #dadada | ||||
| 	border-radius 4px | ||||
|  | ||||
| 	&:hover | ||||
| 		border-color #b0b0b0 | ||||
|  | ||||
| 	&:focus | ||||
| 		border-color $theme-color | ||||
|  | ||||
| textarea.ui | ||||
| 	min-width 100% | ||||
| 	max-width 100% | ||||
| 	min-height 64px | ||||
|  | ||||
| .ui.info | ||||
| 	display block | ||||
| 	margin 1em 0 | ||||
| 	padding 0 1em | ||||
| 	font-size 90% | ||||
| 	color rgba(#000, 0.87) | ||||
| 	background #f8f8f9 | ||||
| 	border solid 1px rgba(34, 36, 38, 0.22) | ||||
| 	border-radius 4px | ||||
|  | ||||
| 	> p | ||||
| 		opacity 0.8 | ||||
|  | ||||
| 		> [data-fa]:first-child | ||||
| 			margin-right 0.25em | ||||
|  | ||||
| 	&.warn | ||||
| 		color #573a08 | ||||
| 		background #FFFAF3 | ||||
| 		border-color #C9BA9B | ||||
|  | ||||
| .ui.from.group | ||||
| 	display block | ||||
| 	margin 16px 0 | ||||
|  | ||||
| 	> p:first-child | ||||
| 		margin 0 0 6px 0 | ||||
| 		font-size 90% | ||||
| 		font-weight bold | ||||
| 		color rgba(#373a3c, 0.9) | ||||
|  | ||||
| html[data-darkmode] | ||||
| 	button.ui | ||||
| 	.button.ui | ||||
| 		color #fff | ||||
| 		background linear-gradient(to bottom, #313543 0%, #282c37 100%) | ||||
| 		border-color #1c2023 | ||||
|  | ||||
| 		&:hover | ||||
| 			background linear-gradient(to bottom, #2c2f3c 0%, #22262f 100%) | ||||
| 			border-color #151a1d | ||||
|  | ||||
| 		&:active | ||||
| 			background #22262f | ||||
| 			border-color #151a1d | ||||
|  | ||||
| 		&.primary | ||||
| 			color $theme-color-foreground | ||||
| 			background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%) | ||||
| 			border solid 1px lighten($theme-color, 15%) | ||||
|  | ||||
| 			&:hover:not(:disabled) | ||||
| 				background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%) | ||||
| 				border-color $theme-color | ||||
|  | ||||
| 			&:active:not(:disabled) | ||||
| 				background $theme-color | ||||
| 				border-color $theme-color | ||||
|  | ||||
| 	input:not([type]).ui | ||||
| 	input[type='text'].ui | ||||
| 	input[type='password'].ui | ||||
| 	input[type='email'].ui | ||||
| 	input[type='date'].ui | ||||
| 	input[type='number'].ui | ||||
| 	textarea.ui | ||||
| 		display block | ||||
| 		padding 10px | ||||
| 		width 100% | ||||
| 		height 40px | ||||
| 		font-family sans-serif | ||||
| 		font-size 16px | ||||
| 		color #dee4e8 | ||||
| 		background #191b22 | ||||
| 		border solid 1px #495156 | ||||
| 		border-radius 4px | ||||
|  | ||||
| 		&:hover | ||||
| 			border-color #b0b0b0 | ||||
|  | ||||
| 		&:focus | ||||
| 			border-color $theme-color | ||||
|  | ||||
| 	.ui.from.group | ||||
| 		> p:first-child | ||||
| 			color #c0c7cc | ||||
| @@ -128,13 +128,11 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| 	color isDark ? #c5ced6 : #777 | ||||
| 	background isDark ? #282C37 : #fff | ||||
| 	border solid 1px rgba(#000, 0.075) | ||||
| 	border-radius 6px | ||||
| .mk-calendar | ||||
| 	color var(--calendarDay) | ||||
| 	background var(--face) | ||||
| 	box-shadow var(--shadow) | ||||
| 	border-radius var(--round) | ||||
| 	overflow hidden | ||||
|  | ||||
| 	&[data-melt] | ||||
| @@ -149,12 +147,10 @@ root(isDark) | ||||
| 		line-height 42px | ||||
| 		font-size 0.9em | ||||
| 		font-weight bold | ||||
| 		color isDark ? #c5ced6 : #888 | ||||
| 		color var(--faceHeaderText) | ||||
| 		background var(--faceHeader) | ||||
| 		box-shadow 0 1px rgba(#000, 0.07) | ||||
|  | ||||
| 		if isDark | ||||
| 			background #313543 | ||||
|  | ||||
| 		> [data-fa] | ||||
| 			margin-right 4px | ||||
|  | ||||
| @@ -166,13 +162,13 @@ root(isDark) | ||||
| 		width 42px | ||||
| 		font-size 0.9em | ||||
| 		line-height 42px | ||||
| 		color isDark ? #9baec8 : #ccc | ||||
| 		color var(--faceTextButton) | ||||
|  | ||||
| 		&:hover | ||||
| 			color isDark ? #b2c1d5 : #aaa | ||||
| 			color var(--faceTextButtonHover) | ||||
|  | ||||
| 		&:active | ||||
| 			color isDark ? #b2c1d5 : #999 | ||||
| 			color var(--faceTextButtonActive) | ||||
|  | ||||
| 		&:first-of-type | ||||
| 			left 0 | ||||
| @@ -195,65 +191,56 @@ root(isDark) | ||||
| 			font-size 14px | ||||
|  | ||||
| 			&.weekday | ||||
| 				color isDark ? #43d5dc : #19a2a9 | ||||
| 				color var(--calendarWeek) | ||||
|  | ||||
| 				&[data-is-donichi] | ||||
| 					color isDark ? #ff6679 : #ef95a0 | ||||
| 					color var(--calendarSaturdayOrSunday) | ||||
|  | ||||
| 				&[data-today] | ||||
| 					box-shadow 0 0 0 1px isDark ? #43d5dc : #19a2a9 inset | ||||
| 					box-shadow 0 0 0 1px var(--calendarWeek) inset | ||||
| 					border-radius 6px | ||||
|  | ||||
| 					&[data-is-donichi] | ||||
| 						box-shadow 0 0 0 1px isDark ? #ff6679 : #ef95a0 inset | ||||
| 						box-shadow 0 0 0 1px var(--calendarSaturdayOrSunday) inset | ||||
|  | ||||
| 			&.day | ||||
| 				cursor pointer | ||||
| 				color isDark ? #c5ced6 : #777 | ||||
| 				color var(--calendarDay) | ||||
|  | ||||
| 				> div | ||||
| 					border-radius 6px | ||||
|  | ||||
| 				&:hover > div | ||||
| 					background rgba(#000, isDark ? 0.1 : 0.025) | ||||
| 					background var(--faceClearButtonHover) | ||||
|  | ||||
| 				&:active > div | ||||
| 					background rgba(#000, isDark ? 0.2 : 0.05) | ||||
| 					background var(--faceClearButtonActive) | ||||
|  | ||||
| 				&[data-is-donichi] | ||||
| 					color isDark ? #ff6679 : #ef95a0 | ||||
| 					color var(--calendarSaturdayOrSunday) | ||||
|  | ||||
| 				&[data-is-out-of-range] | ||||
| 					cursor default | ||||
| 					color rgba(isDark ? #c5ced6 : #777, 0.5) | ||||
|  | ||||
| 					&[data-is-donichi] | ||||
| 						color rgba(isDark ? #ff6679 : #ef95a0, 0.5) | ||||
| 					opacity 0.5 | ||||
|  | ||||
| 				&[data-selected] | ||||
| 					font-weight bold | ||||
|  | ||||
| 					> div | ||||
| 						background rgba(#000, isDark ? 0.1 : 0.025) | ||||
| 						background var(--faceClearButtonHover) | ||||
|  | ||||
| 					&:active > div | ||||
| 						background rgba(#000, isDark ? 0.2 : 0.05) | ||||
| 						background var(--faceClearButtonActive) | ||||
|  | ||||
| 				&[data-today] | ||||
| 					> div | ||||
| 						color $theme-color-foreground | ||||
| 						background $theme-color | ||||
| 						color var(--primaryForeground) | ||||
| 						background var(--primary) | ||||
|  | ||||
| 					&:hover > div | ||||
| 						background lighten($theme-color, 10%) | ||||
| 						background var(--primaryLighten10) | ||||
|  | ||||
| 					&:active > div | ||||
| 						background darken($theme-color, 10%) | ||||
|  | ||||
| .mk-calendar[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-calendar:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 						background var(--primaryDarken10) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -649,7 +649,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .gkgckalzgidaygcxnugepioremxvxvpt | ||||
| 	padding 32px | ||||
| @@ -675,7 +675,7 @@ export default Vue.extend({ | ||||
|  | ||||
| 			* | ||||
| 				&:not(.active) | ||||
| 					color $theme-color | ||||
| 					color var(--primary) | ||||
| 					cursor pointer | ||||
|  | ||||
| 	> div | ||||
|   | ||||
| @@ -59,7 +59,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" module> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .title | ||||
| 	> [data-fa] | ||||
| @@ -74,7 +74,7 @@ export default Vue.extend({ | ||||
|  | ||||
| .footer | ||||
| 	height 72px | ||||
| 	background lighten($theme-color, 95%) | ||||
| 	background var(--primaryLighten95) | ||||
|  | ||||
| .upload | ||||
| 	display inline-block | ||||
| @@ -87,7 +87,7 @@ export default Vue.extend({ | ||||
| 	width 40px | ||||
| 	height 40px | ||||
| 	font-size 1em | ||||
| 	color rgba($theme-color, 0.5) | ||||
| 	color var(--primaryAlpha05) | ||||
| 	background transparent | ||||
| 	outline none | ||||
| 	border solid 1px transparent | ||||
| @@ -95,13 +95,13 @@ export default Vue.extend({ | ||||
|  | ||||
| 	&:hover | ||||
| 		background transparent | ||||
| 		border-color rgba($theme-color, 0.3) | ||||
| 		border-color var(--primaryAlpha03) | ||||
|  | ||||
| 	&:active | ||||
| 		color rgba($theme-color, 0.6) | ||||
| 		color var(--primaryAlpha06) | ||||
| 		background transparent | ||||
| 		border-color rgba($theme-color, 0.5) | ||||
| 		box-shadow 0 2px 4px rgba(darken($theme-color, 50%), 0.15) inset | ||||
| 		border-color var(--primaryAlpha05) | ||||
| 		//box-shadow 0 2px 4px rgba(var(--primaryDarken50), 0.15) inset | ||||
|  | ||||
| 	&:focus | ||||
| 		&:after | ||||
| @@ -112,7 +112,7 @@ export default Vue.extend({ | ||||
| 			right -5px | ||||
| 			bottom -5px | ||||
| 			left -5px | ||||
| 			border 2px solid rgba($theme-color, 0.3) | ||||
| 			border 2px solid var(--primaryAlpha03) | ||||
| 			border-radius 8px | ||||
|  | ||||
| .ok | ||||
| @@ -138,7 +138,7 @@ export default Vue.extend({ | ||||
| 			right -5px | ||||
| 			bottom -5px | ||||
| 			left -5px | ||||
| 			border 2px solid rgba($theme-color, 0.3) | ||||
| 			border 2px solid var(--primaryAlpha03) | ||||
| 			border-radius 8px | ||||
|  | ||||
| 	&:disabled | ||||
| @@ -147,20 +147,20 @@ export default Vue.extend({ | ||||
|  | ||||
| .ok | ||||
| 	right 16px | ||||
| 	color $theme-color-foreground | ||||
| 	background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%) | ||||
| 	border solid 1px lighten($theme-color, 15%) | ||||
| 	color var(--primaryForeground) | ||||
| 	background linear-gradient(to bottom, var(--primaryLighten25) 0%, var(--primaryLighten10) 100%) | ||||
| 	border solid 1px var(--primaryLighten15) | ||||
|  | ||||
| 	&:not(:disabled) | ||||
| 		font-weight bold | ||||
|  | ||||
| 	&:hover:not(:disabled) | ||||
| 		background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%) | ||||
| 		border-color $theme-color | ||||
| 		background linear-gradient(to bottom, var(--primaryLighten8) 0%, var(--primaryDarken8) 100%) | ||||
| 		border-color var(--primary) | ||||
|  | ||||
| 	&:active:not(:disabled) | ||||
| 		background $theme-color | ||||
| 		border-color $theme-color | ||||
| 		background var(--primary) | ||||
| 		border-color var(--primary) | ||||
|  | ||||
| .cancel | ||||
| 	right 148px | ||||
|   | ||||
| @@ -37,7 +37,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" module> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .title | ||||
| 	> [data-fa] | ||||
| @@ -48,7 +48,7 @@ export default Vue.extend({ | ||||
|  | ||||
| .footer | ||||
| 	height 72px | ||||
| 	background lighten($theme-color, 95%) | ||||
| 	background var(--primaryLighten95) | ||||
|  | ||||
| .ok | ||||
| .cancel | ||||
| @@ -73,7 +73,7 @@ export default Vue.extend({ | ||||
| 			right -5px | ||||
| 			bottom -5px | ||||
| 			left -5px | ||||
| 			border 2px solid rgba($theme-color, 0.3) | ||||
| 			border 2px solid var(--primaryAlpha03) | ||||
| 			border-radius 8px | ||||
|  | ||||
| 	&:disabled | ||||
| @@ -82,20 +82,20 @@ export default Vue.extend({ | ||||
|  | ||||
| .ok | ||||
| 	right 16px | ||||
| 	color $theme-color-foreground | ||||
| 	background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%) | ||||
| 	border solid 1px lighten($theme-color, 15%) | ||||
| 	color var(--primaryForeground) | ||||
| 	background linear-gradient(to bottom, var(--primaryLighten25) 0%, var(--primaryLighten10) 100%) | ||||
| 	border solid 1px var(--primaryLighten15) | ||||
|  | ||||
| 	&:not(:disabled) | ||||
| 		font-weight bold | ||||
|  | ||||
| 	&:hover:not(:disabled) | ||||
| 		background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%) | ||||
| 		border-color $theme-color | ||||
| 		background linear-gradient(to bottom, var(--primaryLighten8) 0%, var(--primaryDarken8) 100%) | ||||
| 		border-color var(--primary) | ||||
|  | ||||
| 	&:active:not(:disabled) | ||||
| 		background $theme-color | ||||
| 		border-color $theme-color | ||||
| 		background var(--primary) | ||||
| 		border-color var(--primary) | ||||
|  | ||||
| .cancel | ||||
| 	right 148px | ||||
|   | ||||
| @@ -31,9 +31,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .menu | ||||
| 	$width = 240px | ||||
| 	$item-height = 38px | ||||
| 	$padding = 10px | ||||
| @@ -48,7 +46,7 @@ root(isDark) | ||||
| 		&.divider | ||||
| 			margin-top $padding | ||||
| 			padding-top $padding | ||||
| 			border-top solid 1px isDark ? #1c2023 : #eee | ||||
| 			border-top solid 1px var(--faceDivider) | ||||
|  | ||||
| 		&.nest | ||||
| 			> p | ||||
| @@ -69,7 +67,7 @@ root(isDark) | ||||
|  | ||||
| 			&:active | ||||
| 				> p, a | ||||
| 					background $theme-color | ||||
| 					background var(--primary) | ||||
|  | ||||
| 		> p, a | ||||
| 			display block | ||||
| @@ -77,7 +75,7 @@ root(isDark) | ||||
| 			margin 0 | ||||
| 			padding 0 32px 0 38px | ||||
| 			line-height $item-height | ||||
| 			color isDark ? #c8cece : #868C8C | ||||
| 			color var(--text) | ||||
| 			text-decoration none | ||||
| 			cursor pointer | ||||
|  | ||||
| @@ -90,14 +88,14 @@ root(isDark) | ||||
| 		&:hover | ||||
| 			> p, a | ||||
| 				text-decoration none | ||||
| 				background $theme-color | ||||
| 				color $theme-color-foreground | ||||
| 				background var(--primary) | ||||
| 				color var(--primaryForeground) | ||||
|  | ||||
| 		&:active | ||||
| 			> p, a | ||||
| 				text-decoration none | ||||
| 				background darken($theme-color, 10%) | ||||
| 				color $theme-color-foreground | ||||
| 				background var(--primaryDarken10) | ||||
| 				color var(--primaryForeground) | ||||
|  | ||||
| 	li > ul | ||||
| 		visibility hidden | ||||
| @@ -106,17 +104,11 @@ root(isDark) | ||||
| 		left $width | ||||
| 		margin-top -($padding) | ||||
| 		width $width | ||||
| 		background isDark ? #282c37 :#fff | ||||
| 		background var(--popupBg) | ||||
| 		border-radius 0 4px 4px 4px | ||||
| 		box-shadow 2px 2px 8px rgba(#000, 0.2) | ||||
| 		transition visibility 0s linear 0.2s | ||||
|  | ||||
| .menu[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .menu:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|  | ||||
| <style lang="stylus" module> | ||||
|   | ||||
| @@ -71,7 +71,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .context-menu | ||||
| 	$width = 240px | ||||
| 	$item-height = 38px | ||||
| 	$padding = 10px | ||||
| @@ -82,15 +82,9 @@ root(isDark) | ||||
| 	z-index 4096 | ||||
| 	width $width | ||||
| 	font-size 0.8em | ||||
| 	background isDark ? #282c37 : #fff | ||||
| 	background var(--popupBg) | ||||
| 	border-radius 0 4px 4px 4px | ||||
| 	box-shadow 2px 2px 8px rgba(#000, 0.2) | ||||
| 	opacity 0 | ||||
|  | ||||
| .context-menu[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .context-menu:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -61,7 +61,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" module> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .header | ||||
| 	> [data-fa] | ||||
| @@ -73,7 +73,7 @@ export default Vue.extend({ | ||||
|  | ||||
| .actions | ||||
| 	height 72px | ||||
| 	background lighten($theme-color, 95%) | ||||
| 	background var(--primaryLighten95) | ||||
|  | ||||
| .ok | ||||
| .cancel | ||||
| @@ -98,7 +98,7 @@ export default Vue.extend({ | ||||
| 			right -5px | ||||
| 			bottom -5px | ||||
| 			left -5px | ||||
| 			border 2px solid rgba($theme-color, 0.3) | ||||
| 			border 2px solid var(--primaryAlpha03) | ||||
| 			border-radius 8px | ||||
|  | ||||
| 	&:disabled | ||||
| @@ -111,20 +111,20 @@ export default Vue.extend({ | ||||
|  | ||||
| .ok | ||||
| 	right 16px | ||||
| 	color $theme-color-foreground | ||||
| 	background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%) | ||||
| 	border solid 1px lighten($theme-color, 15%) | ||||
| 	color var(--primaryForeground) | ||||
| 	background linear-gradient(to bottom, var(--primaryLighten25) 0%, var(--primaryLighten10) 100%) | ||||
| 	border solid 1px var(--primaryLighten15) | ||||
|  | ||||
| 	&:not(:disabled) | ||||
| 		font-weight bold | ||||
|  | ||||
| 	&:hover:not(:disabled) | ||||
| 		background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%) | ||||
| 		border-color $theme-color | ||||
| 		background linear-gradient(to bottom, var(--primaryLighten8) 0%, var(--primaryDarken8) 100%) | ||||
| 		border-color var(--primary) | ||||
|  | ||||
| 	&:active:not(:disabled) | ||||
| 		background $theme-color | ||||
| 		border-color $theme-color | ||||
| 		background var(--primary) | ||||
| 		border-color var(--primary) | ||||
|  | ||||
| .cancel | ||||
| .skip | ||||
| @@ -155,11 +155,11 @@ export default Vue.extend({ | ||||
| } | ||||
|  | ||||
| .cropper-view-box { | ||||
| 	outline-color: $theme-color; | ||||
| 	outline-color: var(--primary); | ||||
| } | ||||
|  | ||||
| .cropper-line, .cropper-point { | ||||
| 	background-color: $theme-color; | ||||
| 	background-color: var(--primary); | ||||
| } | ||||
|  | ||||
| .cropper-bg { | ||||
|   | ||||
| @@ -91,7 +91,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .mk-dialog | ||||
| 	> .bg | ||||
| @@ -144,20 +144,20 @@ export default Vue.extend({ | ||||
| 					margin 0 0.375em | ||||
|  | ||||
| 				&:hover | ||||
| 					color $theme-color | ||||
| 					color var(--primary) | ||||
|  | ||||
| 				&:active | ||||
| 					color darken($theme-color, 10%) | ||||
| 					color var(--primaryDarken10) | ||||
| 					transition color 0s ease | ||||
|  | ||||
| </style> | ||||
|  | ||||
| <style lang="stylus" module> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .header | ||||
| 	margin 1em 0 | ||||
| 	color $theme-color | ||||
| 	color var(--primary) | ||||
| 	// color #43A4EC | ||||
| 	font-weight bold | ||||
|  | ||||
|   | ||||
| @@ -200,9 +200,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .gvfdktuvdgwhmztnuekzkswkjygptfcv | ||||
| 	padding 8px 0 0 0 | ||||
| 	height 180px | ||||
| 	border-radius 4px | ||||
| @@ -237,13 +235,13 @@ root(isDark) | ||||
| 					background #ce2212 | ||||
|  | ||||
| 	&[data-is-selected] | ||||
| 		background $theme-color | ||||
| 		background var(--primary) | ||||
|  | ||||
| 		&:hover | ||||
| 			background lighten($theme-color, 10%) | ||||
| 			background var(--primaryLighten10) | ||||
|  | ||||
| 		&:active | ||||
| 			background darken($theme-color, 10%) | ||||
| 			background var(--primaryDarken10) | ||||
|  | ||||
| 		> .label | ||||
| 			&:before | ||||
| @@ -251,7 +249,7 @@ root(isDark) | ||||
| 				display none | ||||
|  | ||||
| 		> .name | ||||
| 			color $theme-color-foreground | ||||
| 			color var(--primaryForeground) | ||||
|  | ||||
| 	&[data-is-contextmenu-showing] | ||||
| 		&:after | ||||
| @@ -262,7 +260,7 @@ root(isDark) | ||||
| 			right -4px | ||||
| 			bottom -4px | ||||
| 			left -4px | ||||
| 			border 2px dashed rgba($theme-color, 0.3) | ||||
| 			border 2px dashed var(--primaryAlpha03) | ||||
| 			border-radius 4px | ||||
|  | ||||
| 	> .label | ||||
| @@ -337,16 +335,10 @@ root(isDark) | ||||
| 		font-size 0.8em | ||||
| 		text-align center | ||||
| 		word-break break-all | ||||
| 		color isDark ? #fff : #444 | ||||
| 		color var(--text) | ||||
| 		overflow hidden | ||||
|  | ||||
| 		> .ext | ||||
| 			opacity 0.5 | ||||
|  | ||||
| .gvfdktuvdgwhmztnuekzkswkjygptfcv[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .gvfdktuvdgwhmztnuekzkswkjygptfcv:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -214,12 +214,10 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .ynntpczxvnusfwdyxsfuhvcmuypqopdd | ||||
| 	padding 8px | ||||
| 	height 64px | ||||
| 	background isDark ? rgba($theme-color, 0.2) : lighten($theme-color, 95%) | ||||
| 	background var(--desktopDriveFolderBg) | ||||
| 	border-radius 4px | ||||
|  | ||||
| 	&, * | ||||
| @@ -229,10 +227,10 @@ root(isDark) | ||||
| 		pointer-events none | ||||
|  | ||||
| 	&:hover | ||||
| 		background isDark ? rgba(lighten($theme-color, 10%), 0.2) : lighten($theme-color, 90%) | ||||
| 		background var(--desktopDriveFolderHoverBg) | ||||
|  | ||||
| 	&:active | ||||
| 		background isDark ? rgba(darken($theme-color, 10%), 0.2) : lighten($theme-color, 85%) | ||||
| 		background var(--desktopDriveFolderActiveBg) | ||||
|  | ||||
| 	&[data-is-contextmenu-showing] | ||||
| 	&[data-draghover] | ||||
| @@ -244,26 +242,20 @@ root(isDark) | ||||
| 			right -4px | ||||
| 			bottom -4px | ||||
| 			left -4px | ||||
| 			border 2px dashed rgba($theme-color, 0.3) | ||||
| 			border 2px dashed var(--primaryAlpha03) | ||||
| 			border-radius 4px | ||||
|  | ||||
| 	&[data-draghover] | ||||
| 		background isDark ? rgba(darken($theme-color, 10%), 0.2) : lighten($theme-color, 90%) | ||||
| 		background var(--desktopDriveFolderActiveBg) | ||||
|  | ||||
| 	> .name | ||||
| 		margin 0 | ||||
| 		font-size 0.9em | ||||
| 		color isDark ? #fff : darken($theme-color, 30%) | ||||
| 		color var(--desktopDriveFolderFg) | ||||
|  | ||||
| 		> [data-fa] | ||||
| 			margin-right 4px | ||||
| 			margin-left 2px | ||||
| 			text-align left | ||||
|  | ||||
| .ynntpczxvnusfwdyxsfuhvcmuypqopdd[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .ynntpczxvnusfwdyxsfuhvcmuypqopdd:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -585,18 +585,15 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
|  | ||||
| .mk-drive | ||||
| 	> nav | ||||
| 		display block | ||||
| 		z-index 2 | ||||
| 		width 100% | ||||
| 		overflow auto | ||||
| 		font-size 0.9em | ||||
| 		color isDark ? #d2d9dc : #555 | ||||
| 		background isDark ? #282c37 : #fff | ||||
| 		color var(--text) | ||||
| 		background var(--face) | ||||
| 		box-shadow 0 1px 0 rgba(#000, 0.05) | ||||
|  | ||||
| 		&, * | ||||
| @@ -674,7 +671,7 @@ root(isDark) | ||||
| 		padding 8px | ||||
| 		height calc(100% - 38px) | ||||
| 		overflow auto | ||||
| 		background isDark ? #191b22 : #fff | ||||
| 		background var(--desktopDriveBg) | ||||
|  | ||||
| 		&, * | ||||
| 			user-select none | ||||
| @@ -697,8 +694,8 @@ root(isDark) | ||||
| 			z-index 128 | ||||
| 			top 0 | ||||
| 			left 0 | ||||
| 			border solid 1px $theme-color | ||||
| 			background rgba($theme-color, 0.5) | ||||
| 			border solid 1px var(--primary) | ||||
| 			background var(--primaryAlpha05) | ||||
| 			pointer-events none | ||||
|  | ||||
| 		> .contents | ||||
| @@ -769,7 +766,7 @@ root(isDark) | ||||
| 		top 38px | ||||
| 		width 100% | ||||
| 		height calc(100% - 38px) | ||||
| 		border dashed 2px rgba($theme-color, 0.5) | ||||
| 		border dashed 2px var(--primaryAlpha05) | ||||
| 		pointer-events none | ||||
|  | ||||
| 	> .mk-uploader | ||||
| @@ -780,10 +777,4 @@ root(isDark) | ||||
| 	> input | ||||
| 		display none | ||||
|  | ||||
| .mk-drive[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-drive:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -5,7 +5,8 @@ | ||||
| 	:disabled="wait" | ||||
| > | ||||
| 	<template v-if="!wait"> | ||||
| 		<template v-if="u.hasPendingFollowRequestFromYou">%fa:hourglass-half%<template v-if="size == 'big'"> %i18n:@request-pending%</template></template> | ||||
| 		<template v-if="u.hasPendingFollowRequestFromYou && u.isLocked">%fa:hourglass-half%<template v-if="size == 'big'"> %i18n:@request-pending%</template></template> | ||||
| 		<template v-else-if="u.hasPendingFollowRequestFromYou && !u.isLocked">%fa:hourglass-start%<template v-if="size == 'big'"> %i18n:@follow-processing%</template></template> | ||||
| 		<template v-else-if="u.isFollowing">%fa:minus%<template v-if="size == 'big'"> %i18n:@following%</template></template> | ||||
| 		<template v-else-if="!u.isFollowing && u.isLocked">%fa:plus%<template v-if="size == 'big'"> %i18n:@follow-request%</template></template> | ||||
| 		<template v-else-if="!u.isFollowing && !u.isLocked">%fa:plus%<template v-if="size == 'big'"> %i18n:@follow%</template></template> | ||||
| @@ -101,9 +102,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-follow-button | ||||
| 	display block | ||||
| 	cursor pointer | ||||
| 	padding 0 | ||||
| @@ -126,37 +125,34 @@ root(isDark) | ||||
| 			right -5px | ||||
| 			bottom -5px | ||||
| 			left -5px | ||||
| 			border 2px solid rgba($theme-color, 0.3) | ||||
| 			border 2px solid var(--primaryAlpha03) | ||||
| 			border-radius 8px | ||||
|  | ||||
| 	&:not(.active) | ||||
| 		color isDark ? #fff : #888 | ||||
| 		background isDark ? linear-gradient(to bottom, #313543 0%, #282c37 100%) : linear-gradient(to bottom, #ffffff 0%, #f5f5f5 100%) | ||||
| 		border solid 1px isDark ? #1c2023 : #e2e2e2 | ||||
| 		color var(--primary) | ||||
| 		border solid 1px var(--primary) | ||||
|  | ||||
| 		&:hover | ||||
| 			background isDark ? linear-gradient(to bottom, #2c2f3c 0%, #22262f 100%) : linear-gradient(to bottom, #f9f9f9 0%, #ececec 100%) | ||||
| 			border-color isDark ? #151a1d : #dcdcdc | ||||
| 			background var(--primaryAlpha03) | ||||
|  | ||||
| 		&:active | ||||
| 			background isDark ? #22262f : #ececec | ||||
| 			border-color isDark ? #151a1d : #dcdcdc | ||||
| 			background var(--primaryAlpha05) | ||||
|  | ||||
| 	&.active | ||||
| 		color $theme-color-foreground | ||||
| 		background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%) | ||||
| 		border solid 1px lighten($theme-color, 15%) | ||||
| 		color var(--primaryForeground) | ||||
| 		background var(--primary) | ||||
| 		border solid 1px var(--primary) | ||||
|  | ||||
| 		&:not(:disabled) | ||||
| 			font-weight bold | ||||
|  | ||||
| 		&:hover:not(:disabled) | ||||
| 			background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%) | ||||
| 			border-color $theme-color | ||||
| 			background var(--primaryLighten5) | ||||
| 			border-color var(--primaryLighten5) | ||||
|  | ||||
| 		&:active:not(:disabled) | ||||
| 			background $theme-color | ||||
| 			border-color $theme-color | ||||
| 			background var(--primaryDarken5) | ||||
| 			border-color var(--primaryDarken5) | ||||
|  | ||||
| 	&.wait | ||||
| 		cursor wait !important | ||||
| @@ -167,10 +163,4 @@ root(isDark) | ||||
| 		height 38px | ||||
| 		line-height 38px | ||||
|  | ||||
| .mk-follow-button[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-follow-button:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -247,9 +247,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-home | ||||
| 	display block | ||||
|  | ||||
| 	&[data-customize] | ||||
| @@ -279,8 +277,8 @@ root(isDark) | ||||
| 		left 0 | ||||
| 		width 100% | ||||
| 		height 48px | ||||
| 		color isDark ? #fff : #000 | ||||
| 		background isDark ? #313543 : #f7f7f7 | ||||
| 		color var(--text) | ||||
| 		background var(--desktopHeaderBg) | ||||
| 		box-shadow 0 1px 1px rgba(#000, 0.075) | ||||
|  | ||||
| 		> a | ||||
| @@ -292,15 +290,15 @@ root(isDark) | ||||
| 			padding 0 16px | ||||
| 			line-height 48px | ||||
| 			text-decoration none | ||||
| 			color $theme-color-foreground | ||||
| 			background $theme-color | ||||
| 			color var(--primaryForeground) | ||||
| 			background var(--primary) | ||||
| 			transition background 0.1s ease | ||||
|  | ||||
| 			&:hover | ||||
| 				background lighten($theme-color, 10%) | ||||
| 				background var(--primaryLighten10) | ||||
|  | ||||
| 			&:active | ||||
| 				background darken($theme-color, 10%) | ||||
| 				background var(--primaryDarken10) | ||||
| 				transition background 0s ease | ||||
|  | ||||
| 			> [data-fa] | ||||
| @@ -320,7 +318,7 @@ root(isDark) | ||||
| 						line-height 48px | ||||
|  | ||||
| 				&.trash | ||||
| 					border-left solid 1px isDark ? #1c2023 : #ddd | ||||
| 					border-left solid 1px var(--faceDivider) | ||||
|  | ||||
| 					> div | ||||
| 						width 100% | ||||
| @@ -340,7 +338,7 @@ root(isDark) | ||||
| 		display flex | ||||
| 		justify-content center | ||||
| 		margin 0 auto | ||||
| 		max-width 1220px | ||||
| 		max-width 1240px | ||||
|  | ||||
| 		> * | ||||
| 			.customize-container | ||||
| @@ -355,13 +353,13 @@ root(isDark) | ||||
|  | ||||
| 		> .main | ||||
| 			padding 16px | ||||
| 			width calc(100% - 275px * 2) | ||||
| 			width calc(100% - 280px * 2) | ||||
| 			order 2 | ||||
|  | ||||
| 			> .form | ||||
| 				margin-bottom 16px | ||||
| 				border solid 1px rgba(#000, 0.075) | ||||
| 				border-radius 4px | ||||
| 				box-shadow var(--shadow) | ||||
| 				border-radius var(--round) | ||||
|  | ||||
| 			@media (max-width 700px) | ||||
| 				padding 0 | ||||
| @@ -371,7 +369,7 @@ root(isDark) | ||||
| 					border-radius 0 | ||||
|  | ||||
| 		> *:not(.main) | ||||
| 			width 275px | ||||
| 			width 280px | ||||
| 			padding 16px 0 16px 0 | ||||
|  | ||||
| 			> *:not(:last-child) | ||||
| @@ -395,10 +393,4 @@ root(isDark) | ||||
| 				max-width 700px | ||||
| 				margin 0 auto | ||||
|  | ||||
| .mk-home[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-home:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -76,7 +76,7 @@ export default Vue.extend({ | ||||
|  | ||||
|  | ||||
| <style lang="stylus" module> | ||||
| @import '~const.styl' | ||||
|  | ||||
|  | ||||
| .header | ||||
| 	> [data-fa] | ||||
| @@ -96,25 +96,25 @@ export default Vue.extend({ | ||||
| 		color #333 | ||||
| 		background #fff | ||||
| 		outline none | ||||
| 		border solid 1px rgba($theme-color, 0.1) | ||||
| 		border solid 1px var(--primaryAlpha01) | ||||
| 		border-radius 4px | ||||
| 		transition border-color .3s ease | ||||
|  | ||||
| 		&:hover | ||||
| 			border-color rgba($theme-color, 0.2) | ||||
| 			border-color var(--primaryAlpha02) | ||||
| 			transition border-color .1s ease | ||||
|  | ||||
| 		&:focus | ||||
| 			color $theme-color | ||||
| 			border-color rgba($theme-color, 0.5) | ||||
| 			color var(--primary) | ||||
| 			border-color var(--primaryAlpha05) | ||||
| 			transition border-color 0s ease | ||||
|  | ||||
| 		&::-webkit-input-placeholder | ||||
| 			color rgba($theme-color, 0.3) | ||||
| 			color var(--primaryAlpha03) | ||||
|  | ||||
| .actions | ||||
| 	height 72px | ||||
| 	background lighten($theme-color, 95%) | ||||
| 	background var(--primaryLighten95) | ||||
|  | ||||
| .ok | ||||
| .cancel | ||||
| @@ -139,7 +139,7 @@ export default Vue.extend({ | ||||
| 			right -5px | ||||
| 			bottom -5px | ||||
| 			left -5px | ||||
| 			border 2px solid rgba($theme-color, 0.3) | ||||
| 			border 2px solid var(--primaryAlpha03) | ||||
| 			border-radius 8px | ||||
|  | ||||
| 	&:disabled | ||||
| @@ -148,20 +148,20 @@ export default Vue.extend({ | ||||
|  | ||||
| .ok | ||||
| 	right 16px | ||||
| 	color $theme-color-foreground | ||||
| 	background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%) | ||||
| 	border solid 1px lighten($theme-color, 15%) | ||||
| 	color var(--primaryForeground) | ||||
| 	background linear-gradient(to bottom, var(--primaryLighten25) 0%, var(--primaryLighten10) 100%) | ||||
| 	border solid 1px var(--primaryLighten15) | ||||
|  | ||||
| 	&:not(:disabled) | ||||
| 		font-weight bold | ||||
|  | ||||
| 	&:hover:not(:disabled) | ||||
| 		background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%) | ||||
| 		border-color $theme-color | ||||
| 		background linear-gradient(to bottom, var(--primaryLighten8) 0%, var(--primaryDarken8) 100%) | ||||
| 		border-color var(--primary) | ||||
|  | ||||
| 	&:active:not(:disabled) | ||||
| 		background $theme-color | ||||
| 		border-color $theme-color | ||||
| 		background var(--primary) | ||||
| 		border-color var(--primary) | ||||
|  | ||||
| .cancel | ||||
| 	right 148px | ||||
|   | ||||
| @@ -225,14 +225,12 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-note-detail | ||||
| 	overflow hidden | ||||
| 	text-align left | ||||
| 	background isDark ? #282C37 : #fff | ||||
| 	border solid 1px rgba(#000, 0.1) | ||||
| 	border-radius 8px | ||||
| 	background var(--face) | ||||
| 	box-shadow var(--shadow) | ||||
| 	border-radius var(--round) | ||||
|  | ||||
| 	> .read-more | ||||
| 		display block | ||||
| @@ -243,28 +241,28 @@ root(isDark) | ||||
| 		text-align center | ||||
| 		color #999 | ||||
| 		cursor pointer | ||||
| 		background isDark ? #21242d : #fafafa | ||||
| 		background var(--subNoteBg) | ||||
| 		outline none | ||||
| 		border none | ||||
| 		border-bottom solid 1px isDark ? #1c2023 : #eef0f2 | ||||
| 		border-radius 6px 6px 0 0 | ||||
| 		border-bottom solid 1px var(--faceDivider) | ||||
| 		border-radius var(--round) var(--round) 0 0 | ||||
|  | ||||
| 		&:hover | ||||
| 			background isDark ? #2e3440 : #f6f6f6 | ||||
| 			box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.05) | ||||
|  | ||||
| 		&:active | ||||
| 			background isDark ? #21242b : #f0f0f0 | ||||
| 			box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.1) | ||||
|  | ||||
| 		&:disabled | ||||
| 			color isDark ? #21242b : #ccc | ||||
| 			cursor wait | ||||
|  | ||||
| 	> .conversation | ||||
| 		> * | ||||
| 			border-bottom 1px solid isDark ? #1c2023 : #eef0f2 | ||||
| 			border-bottom 1px solid var(--faceDivider) | ||||
|  | ||||
| 	> .renote | ||||
| 		color #9dbb00 | ||||
| 		background isDark ? linear-gradient(to bottom, #314027 0%, #282c37 100%) : linear-gradient(to bottom, #edfde2 0%, #fff 100%) | ||||
| 		color var(--renoteText) | ||||
| 		background linear-gradient(to bottom, var(--renoteGradient) 0%, var(--face) 100%) | ||||
|  | ||||
| 		> p | ||||
| 			margin 0 | ||||
| @@ -287,7 +285,7 @@ root(isDark) | ||||
| 			padding-top 8px | ||||
|  | ||||
| 	> .reply-to | ||||
| 		border-bottom 1px solid isDark ? #1c2023 : #eef0f2 | ||||
| 		border-bottom 1px solid var(--faceDivider) | ||||
|  | ||||
| 	> article | ||||
| 		padding 28px 32px 18px 32px | ||||
| @@ -299,7 +297,7 @@ root(isDark) | ||||
|  | ||||
| 		&:hover | ||||
| 			> footer > button | ||||
| 				color isDark ? #707b97 : #888 | ||||
| 				color var(--noteActionsHighlighted) | ||||
|  | ||||
| 		> .avatar | ||||
| 			width 60px | ||||
| @@ -316,7 +314,7 @@ root(isDark) | ||||
| 				display inline-block | ||||
| 				margin 0 | ||||
| 				line-height 24px | ||||
| 				color isDark ? #fff : #627079 | ||||
| 				color var(--noteHeaderName) | ||||
| 				font-size 18px | ||||
| 				font-weight 700 | ||||
| 				text-align left | ||||
| @@ -329,14 +327,14 @@ root(isDark) | ||||
| 				display block | ||||
| 				text-align left | ||||
| 				margin 0 | ||||
| 				color isDark ? #606984 : #ccc | ||||
| 				color var(--noteHeaderAcct) | ||||
|  | ||||
| 			> .time | ||||
| 				position absolute | ||||
| 				top 0 | ||||
| 				right 32px | ||||
| 				font-size 1em | ||||
| 				color isDark ? #606984 : #c0c0c0 | ||||
| 				color var(--noteHeaderInfo) | ||||
|  | ||||
| 		> .body | ||||
| 			padding 8px 0 | ||||
| @@ -347,7 +345,7 @@ root(isDark) | ||||
| 				margin 0 | ||||
| 				padding 0 | ||||
| 				overflow-wrap break-word | ||||
| 				color isDark ? #fff : #717171 | ||||
| 				color var(--noteText) | ||||
|  | ||||
| 				> .text | ||||
| 					margin-right 8px | ||||
| @@ -360,14 +358,14 @@ root(isDark) | ||||
| 					padding 0 | ||||
| 					overflow-wrap break-word | ||||
| 					font-size 1.5em | ||||
| 					color isDark ? #fff : #717171 | ||||
| 					color var(--noteText) | ||||
|  | ||||
| 				> .renote | ||||
| 					margin 8px 0 | ||||
|  | ||||
| 					> * | ||||
| 						padding 16px | ||||
| 						border dashed 1px #c0dac6 | ||||
| 						border dashed 1px var(--quoteBorder) | ||||
| 						border-radius 8px | ||||
|  | ||||
| 				> .location | ||||
| @@ -394,20 +392,20 @@ root(isDark) | ||||
| 				background transparent | ||||
| 				border none | ||||
| 				font-size 1em | ||||
| 				color isDark ? #606984 : #ccc | ||||
| 				color var(--noteActions) | ||||
| 				cursor pointer | ||||
|  | ||||
| 				&:hover | ||||
| 					color isDark ? #a1a8bf : #444 | ||||
| 					color var(--noteActionsHover) | ||||
|  | ||||
| 				&.replyButton:hover | ||||
| 					color #0af | ||||
| 					color var(--noteActionsReplyHover) | ||||
|  | ||||
| 				&.renoteButton:hover | ||||
| 					color #8d0 | ||||
| 					color var(--noteActionsRenoteHover) | ||||
|  | ||||
| 				&.reactionButton:hover | ||||
| 					color #fa0 | ||||
| 					color var(--noteActionsReactionHover) | ||||
|  | ||||
| 				> .count | ||||
| 					display inline | ||||
| @@ -415,16 +413,10 @@ root(isDark) | ||||
| 					color #999 | ||||
|  | ||||
| 				&.reacted, &.reacted:hover | ||||
| 					color #fa0 | ||||
| 					color var(--noteActionsReactionHover) | ||||
|  | ||||
| 	> .replies | ||||
| 		> * | ||||
| 			border-top 1px solid isDark ? #1c2023 : #eef0f2 | ||||
|  | ||||
| .mk-note-detail[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-note-detail:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 			border-top 1px solid var(--faceDivider) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -47,7 +47,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .qiziqtywpuaucsgarwajitwaakggnisj | ||||
| 	display flex | ||||
| 	font-size 0.9em | ||||
|  | ||||
| @@ -71,7 +71,7 @@ root(isDark) | ||||
| 				margin 0 | ||||
| 				padding 0 | ||||
| 				overflow-wrap break-word | ||||
| 				color isDark ? #fff : #717171 | ||||
| 				color var(--noteText) | ||||
|  | ||||
| 				> .text | ||||
| 					margin-right 8px | ||||
| @@ -81,12 +81,6 @@ root(isDark) | ||||
| 					cursor default | ||||
| 					margin 0 | ||||
| 					padding 0 | ||||
| 					color isDark ? #959ba7 : #717171 | ||||
|  | ||||
| .qiziqtywpuaucsgarwajitwaakggnisj[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .qiziqtywpuaucsgarwajitwaakggnisj:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 					color var(--subNoteText) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -42,12 +42,12 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .tkfdzaxtkdeianobciwadajxzbddorql | ||||
| 	display flex | ||||
| 	margin 0 | ||||
| 	padding 16px 32px | ||||
| 	font-size 0.9em | ||||
| 	background isDark ? #21242d : #fcfcfc | ||||
| 	background var(--subNoteBg) | ||||
|  | ||||
| 	> .avatar | ||||
| 		flex-shrink 0 | ||||
| @@ -72,7 +72,7 @@ root(isDark) | ||||
| 				margin 0 | ||||
| 				padding 0 | ||||
| 				overflow-wrap break-word | ||||
| 				color isDark ? #fff : #717171 | ||||
| 				color var(--noteText) | ||||
|  | ||||
| 				> .text | ||||
| 					margin-right 8px | ||||
| @@ -82,16 +82,10 @@ root(isDark) | ||||
| 					cursor default | ||||
| 					margin 0 | ||||
| 					padding 0 | ||||
| 					color isDark ? #959ba7 : #717171 | ||||
| 					color var(--subNoteText) | ||||
|  | ||||
| 					pre | ||||
| 						max-height 120px | ||||
| 						font-size 80% | ||||
|  | ||||
| .tkfdzaxtkdeianobciwadajxzbddorql[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .tkfdzaxtkdeianobciwadajxzbddorql:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -213,10 +213,14 @@ export default Vue.extend({ | ||||
| 	methods: { | ||||
| 		capture(withHandler = false) { | ||||
| 			if (this.$store.getters.isSignedIn) { | ||||
| 				this.connection.send({ | ||||
| 				const data = { | ||||
| 					type: 'capture', | ||||
| 					id: this.p.id | ||||
| 				}); | ||||
| 				} as any; | ||||
| 				if ((this.p.visibleUserIds || []).includes(this.$store.state.i.id) || (this.p.mentions || []).includes(this.$store.state.i.id)) { | ||||
| 					data.read = true; | ||||
| 				} | ||||
| 				this.connection.send(data); | ||||
| 				if (withHandler) this.connection.on('note-updated', this.onStreamNoteUpdated); | ||||
| 			} | ||||
| 		}, | ||||
| @@ -313,13 +317,11 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .note | ||||
| 	margin 0 | ||||
| 	padding 0 | ||||
| 	background isDark ? #282C37 : #fff | ||||
| 	border-bottom solid 1px isDark ? #1c2023 : #eaeaea | ||||
| 	background var(--face) | ||||
| 	border-bottom solid 1px var(--faceDivider) | ||||
|  | ||||
| 	&[data-round] | ||||
| 		&:first-child | ||||
| @@ -344,7 +346,7 @@ root(isDark) | ||||
| 			right 2px | ||||
| 			bottom 2px | ||||
| 			left 2px | ||||
| 			border 2px solid rgba($theme-color, 0.3) | ||||
| 			border 2px solid var(--primaryAlpha03) | ||||
| 			border-radius 4px | ||||
|  | ||||
| 	> .renote | ||||
| @@ -353,8 +355,8 @@ root(isDark) | ||||
| 		padding 16px 32px 8px 32px | ||||
| 		line-height 28px | ||||
| 		white-space pre | ||||
| 		color #9dbb00 | ||||
| 		background isDark ? linear-gradient(to bottom, #314027 0%, #282c37 100%) : linear-gradient(to bottom, #edfde2 0%, #fff 100%) | ||||
| 		color var(--renoteText) | ||||
| 		background linear-gradient(to bottom, var(--renoteGradient) 0%, var(--face) 100%) | ||||
|  | ||||
| 		.avatar | ||||
| 			display inline-block | ||||
| @@ -394,7 +396,7 @@ root(isDark) | ||||
|  | ||||
| 		&:hover | ||||
| 			> .main > footer > button | ||||
| 				color isDark ? #707b97 : #888 | ||||
| 				color var(--noteActionsHighlighted) | ||||
|  | ||||
| 		> .avatar | ||||
| 			flex-shrink 0 | ||||
| @@ -422,7 +424,7 @@ root(isDark) | ||||
| 					margin 0 | ||||
| 					padding 0 | ||||
| 					overflow-wrap break-word | ||||
| 					color isDark ? #fff : #717171 | ||||
| 					color var(--noteText) | ||||
|  | ||||
| 					> .text | ||||
| 						margin-right 8px | ||||
| @@ -435,7 +437,7 @@ root(isDark) | ||||
| 						margin 0 | ||||
| 						padding 0 | ||||
| 						overflow-wrap break-word | ||||
| 						color isDark ? #fff : #717171 | ||||
| 						color var(--noteText) | ||||
|  | ||||
| 						>>> .title | ||||
| 							display block | ||||
| @@ -443,7 +445,7 @@ root(isDark) | ||||
| 							padding 4px | ||||
| 							font-size 90% | ||||
| 							text-align center | ||||
| 							background isDark ? #2f3944 : #eef1f3 | ||||
| 							background var(--mfmTitleBg) | ||||
| 							border-radius 4px | ||||
|  | ||||
| 						>>> .code | ||||
| @@ -452,17 +454,17 @@ root(isDark) | ||||
| 						>>> .quote | ||||
| 							margin 8px | ||||
| 							padding 6px 12px | ||||
| 							color isDark ? #6f808e : #aaa | ||||
| 							border-left solid 3px isDark ? #637182 : #eee | ||||
| 							color var(--mfmQuote) | ||||
| 							border-left solid 3px var(--mfmQuoteLine) | ||||
|  | ||||
| 						> .reply | ||||
| 							margin-right 8px | ||||
| 							color isDark ? #99abbf : #717171 | ||||
| 							color var(--text) | ||||
|  | ||||
| 						> .rp | ||||
| 							margin-left 4px | ||||
| 							font-style oblique | ||||
| 							color #a0bf46 | ||||
| 							color var(--renoteText) | ||||
|  | ||||
| 					> .location | ||||
| 						margin 4px 0 | ||||
| @@ -487,7 +489,7 @@ root(isDark) | ||||
|  | ||||
| 						> * | ||||
| 							padding 16px | ||||
| 							border dashed 1px isDark ? #4e945e : #c0dac6 | ||||
| 							border dashed 1px var(--quoteBorder) | ||||
| 							border-radius 8px | ||||
|  | ||||
| 			> footer | ||||
| @@ -496,22 +498,22 @@ root(isDark) | ||||
| 					padding 0 8px | ||||
| 					line-height 32px | ||||
| 					font-size 1em | ||||
| 					color isDark ? #606984 : #ddd | ||||
| 					color var(--noteActions) | ||||
| 					background transparent | ||||
| 					border none | ||||
| 					cursor pointer | ||||
|  | ||||
| 					&:hover | ||||
| 						color isDark ? #a1a8bf : #444 | ||||
| 						color var(--noteActionsHover) | ||||
|  | ||||
| 					&.replyButton:hover | ||||
| 						color #0af | ||||
| 						color var(--noteActionsReplyHover) | ||||
|  | ||||
| 					&.renoteButton:hover | ||||
| 						color #8d0 | ||||
| 						color var(--noteActionsRenoteHover) | ||||
|  | ||||
| 					&.reactionButton:hover | ||||
| 						color #fa0 | ||||
| 						color var(--noteActionsReactionHover) | ||||
|  | ||||
| 					> .count | ||||
| 						display inline | ||||
| @@ -519,18 +521,12 @@ root(isDark) | ||||
| 						color #999 | ||||
|  | ||||
| 					&.reacted, &.reacted:hover | ||||
| 						color #fa0 | ||||
| 						color var(--noteActionsReactionHover) | ||||
|  | ||||
| 	> .detail | ||||
| 		padding-top 4px | ||||
| 		background rgba(#000, 0.0125) | ||||
|  | ||||
| .note[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .note:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|  | ||||
| <style lang="stylus" module> | ||||
| @@ -553,7 +549,7 @@ root(isDark) | ||||
| 		padding 0 4px | ||||
| 		margin-left 4px | ||||
| 		font-size 80% | ||||
| 		color $theme-color-foreground | ||||
| 		background $theme-color | ||||
| 		color var(--primaryForeground) | ||||
| 		background var(--primary) | ||||
| 		border-radius 4px | ||||
| </style> | ||||
|   | ||||
| @@ -216,9 +216,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-notes | ||||
| 	.transition | ||||
| 		.mk-notes-enter | ||||
| 		.mk-notes-leave-to | ||||
| @@ -235,9 +233,9 @@ root(isDark) | ||||
| 			line-height 32px | ||||
| 			font-size 14px | ||||
| 			text-align center | ||||
| 			color isDark ? #666b79 : #aaa | ||||
| 			background isDark ? #242731 : #fdfdfd | ||||
| 			border-bottom solid 1px isDark ? #1c2023 : #eaeaea | ||||
| 			color var(--dateDividerFg) | ||||
| 			background var(--dateDividerBg) | ||||
| 			border-bottom solid 1px var(--faceDivider) | ||||
|  | ||||
| 			span | ||||
| 				margin 0 16px | ||||
| @@ -250,7 +248,7 @@ root(isDark) | ||||
| 		position sticky | ||||
| 		z-index 100 | ||||
| 		height 3px | ||||
| 		background $theme-color | ||||
| 		background var(--primary) | ||||
|  | ||||
| 	> footer | ||||
| 		> button | ||||
| @@ -260,21 +258,15 @@ root(isDark) | ||||
| 			width 100% | ||||
| 			text-align center | ||||
| 			color #ccc | ||||
| 			background isDark ? #282C37 : #fff | ||||
| 			border-top solid 1px isDark ? #1c2023 : #eaeaea | ||||
| 			background var(--face) | ||||
| 			border-top solid 1px var(--faceDivider) | ||||
| 			border-bottom-left-radius 6px | ||||
| 			border-bottom-right-radius 6px | ||||
|  | ||||
| 			&:hover | ||||
| 				background isDark ? #2e3440 : #f5f5f5 | ||||
| 				box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.05) | ||||
|  | ||||
| 			&:active | ||||
| 				background isDark ? #21242b : #eee | ||||
|  | ||||
| .mk-notes[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-notes:not([data-darkmode]) | ||||
| 	root(false) | ||||
| 				box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.1) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -191,7 +191,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .mk-notifications | ||||
| 	.transition | ||||
| 		.mk-notifications-enter | ||||
| 		.mk-notifications-leave-to | ||||
| @@ -208,7 +208,7 @@ root(isDark) | ||||
| 				padding 16px | ||||
| 				overflow-wrap break-word | ||||
| 				font-size 13px | ||||
| 				border-bottom solid 1px isDark ? #1c2023 : rgba(#000, 0.05) | ||||
| 				border-bottom solid 1px var(--faceDivider) | ||||
|  | ||||
| 				&:last-child | ||||
| 					border-bottom none | ||||
| @@ -219,7 +219,7 @@ root(isDark) | ||||
| 					top 16px | ||||
| 					right 12px | ||||
| 					vertical-align top | ||||
| 					color isDark ? #606984 : rgba(#000, 0.6) | ||||
| 					color var(--noteHeaderInfo) | ||||
| 					font-size small | ||||
|  | ||||
| 				&:after | ||||
| @@ -249,10 +249,10 @@ root(isDark) | ||||
| 							margin-right 4px | ||||
|  | ||||
| 				.note-preview | ||||
| 					color isDark ? #c2cad4 : rgba(#000, 0.7) | ||||
| 					color var(--noteText) | ||||
|  | ||||
| 				.note-ref | ||||
| 					color isDark ? #c2cad4 : rgba(#000, 0.7) | ||||
| 					color var(--noteText) | ||||
|  | ||||
| 					[data-fa] | ||||
| 						font-size 1em | ||||
| @@ -283,9 +283,9 @@ root(isDark) | ||||
| 				line-height 32px | ||||
| 				text-align center | ||||
| 				font-size 0.8em | ||||
| 				color isDark ? #666b79 : #aaa | ||||
| 				background isDark ? #242731 : #fdfdfd | ||||
| 				border-bottom solid 1px isDark ? #1c2023 : rgba(#000, 0.05) | ||||
| 				color var(--dateDividerFg) | ||||
| 				background var(--dateDividerBg) | ||||
| 				border-bottom solid 1px var(--faceDivider) | ||||
|  | ||||
| 				span | ||||
| 					margin 0 16px | ||||
| @@ -327,10 +327,4 @@ root(isDark) | ||||
| 		> [data-fa] | ||||
| 			margin-right 4px | ||||
|  | ||||
| .mk-notifications[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-notifications:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -77,7 +77,7 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| root(isDark) | ||||
| .mk-post-form-window | ||||
| 	.mk-post-form-window--header | ||||
| 		.icon | ||||
| 			margin-right 8px | ||||
| @@ -94,15 +94,6 @@ root(isDark) | ||||
|  | ||||
| 	.mk-post-form-window--body | ||||
| 		.notePreview | ||||
| 			if isDark | ||||
| 				margin 16px 22px 0 22px | ||||
| 			else | ||||
| 				margin 16px 22px | ||||
|  | ||||
| .mk-post-form-window[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-post-form-window:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -178,6 +178,18 @@ export default Vue.extend({ | ||||
| 			}); | ||||
| 		} | ||||
|  | ||||
| 		// 公開以外へのリプライ時は元の公開範囲を引き継ぐ | ||||
| 		if (this.reply && ['home', 'followers', 'specified', 'private'].includes(this.reply.visibility)) { | ||||
| 			this.visibility = this.reply.visibility; | ||||
| 		} | ||||
|  | ||||
| 		// ダイレクトへのリプライはリプライ先ユーザーを初期設定 | ||||
| 		if (this.reply && this.reply.visibility === 'specified') { | ||||
| 			(this as any).api('users/show', {	userId: this.reply.userId }).then(user => { | ||||
| 				this.visibleUsers.push(user); | ||||
| 			}); | ||||
| 		} | ||||
|  | ||||
| 		this.$nextTick(() => { | ||||
| 			// 書きかけの投稿を復元 | ||||
| 			if (!this.instant) { | ||||
| @@ -434,12 +446,11 @@ export default Vue.extend({ | ||||
| </script> | ||||
|  | ||||
| <style lang="stylus" scoped> | ||||
| @import '~const.styl' | ||||
|  | ||||
| root(isDark) | ||||
| .mk-post-form | ||||
| 	display block | ||||
| 	padding 16px | ||||
| 	background isDark ? #282C37 : lighten($theme-color, 95%) | ||||
| 	background var(--desktopPostFormBg) | ||||
| 	overflow hidden | ||||
|  | ||||
| 	&:after | ||||
| 		content "" | ||||
| @@ -453,26 +464,26 @@ root(isDark) | ||||
| 			width 100% | ||||
| 			padding 12px | ||||
| 			font-size 16px | ||||
| 			color isDark ? #fff : #333 | ||||
| 			background isDark ? #191d23 : #fff | ||||
| 			color var(--desktopPostFormTextareaFg) | ||||
| 			background var(--desktopPostFormTextareaBg) | ||||
| 			outline none | ||||
| 			border solid 1px rgba($theme-color, 0.1) | ||||
| 			border solid 1px var(--primaryAlpha01) | ||||
| 			border-radius 4px | ||||
| 			transition border-color .2s ease | ||||
|  | ||||
| 			&:hover | ||||
| 				border-color rgba($theme-color, 0.2) | ||||
| 				border-color var(--primaryAlpha02) | ||||
| 				transition border-color .1s ease | ||||
|  | ||||
| 			&:focus | ||||
| 				border-color rgba($theme-color, 0.5) | ||||
| 				border-color var(--primaryAlpha05) | ||||
| 				transition border-color 0s ease | ||||
|  | ||||
| 			&:disabled | ||||
| 				opacity 0.5 | ||||
|  | ||||
| 			&::-webkit-input-placeholder | ||||
| 				color rgba($theme-color, 0.3) | ||||
| 				color var(--primaryAlpha03) | ||||
|  | ||||
| 		> input | ||||
| 			margin-bottom 8px | ||||
| @@ -486,17 +497,17 @@ root(isDark) | ||||
| 			&:hover | ||||
| 				& + * | ||||
| 				& + * + * | ||||
| 					border-color rgba($theme-color, 0.2) | ||||
| 					border-color var(--primaryAlpha02) | ||||
| 					transition border-color .1s ease | ||||
|  | ||||
| 			&:focus | ||||
| 				& + * | ||||
| 				& + * + * | ||||
| 					border-color rgba($theme-color, 0.5) | ||||
| 					border-color var(--primaryAlpha05) | ||||
| 					transition border-color 0s ease | ||||
|  | ||||
| 			&.with | ||||
| 				border-bottom solid 1px rgba($theme-color, 0.1) !important | ||||
| 				border-bottom solid 1px var(--primaryAlpha01) !important | ||||
| 				border-radius 4px 4px 0 0 | ||||
|  | ||||
| 		> .visibleUsers | ||||
| @@ -505,7 +516,7 @@ root(isDark) | ||||
|  | ||||
| 			> span | ||||
| 				margin-right 16px | ||||
| 				color isDark ? #fff : #666 | ||||
| 				color var(--primary) | ||||
|  | ||||
| 		> .hashtags | ||||
| 			margin 0 0 8px 0 | ||||
| @@ -514,7 +525,7 @@ root(isDark) | ||||
| 			font-size 14px | ||||
|  | ||||
| 			> b | ||||
| 				color isDark ? #9baec8 : darken($theme-color, 20%) | ||||
| 				color var(--primary) | ||||
|  | ||||
| 			> * | ||||
| 				margin-right 8px | ||||
| @@ -523,14 +534,14 @@ root(isDark) | ||||
| 		> .files | ||||
| 			margin 0 | ||||
| 			padding 0 | ||||
| 			background isDark ? #181b23 : lighten($theme-color, 98%) | ||||
| 			border solid 1px rgba($theme-color, 0.1) | ||||
| 			background var(--desktopPostFormTextareaBg) | ||||
| 			border solid 1px var(--primaryAlpha01) | ||||
| 			border-top none | ||||
| 			border-radius 0 0 4px 4px | ||||
| 			transition border-color .3s ease | ||||
|  | ||||
| 			&.with | ||||
| 				border-bottom solid 1px rgba($theme-color, 0.1) !important | ||||
| 				border-bottom solid 1px var(--primaryAlpha01) !important | ||||
| 				border-radius 0 | ||||
|  | ||||
| 			> .remain | ||||
| @@ -540,7 +551,7 @@ root(isDark) | ||||
| 				right 8px | ||||
| 				margin 0 | ||||
| 				padding 0 | ||||
| 				color rgba($theme-color, 0.4) | ||||
| 				color var(--primaryAlpha04) | ||||
|  | ||||
| 			> div | ||||
| 				padding 4px | ||||
| @@ -574,8 +585,8 @@ root(isDark) | ||||
| 						cursor pointer | ||||
|  | ||||
| 		> .mk-poll-editor | ||||
| 			background isDark ? #181b23 : lighten($theme-color, 98%) | ||||
| 			border solid 1px rgba($theme-color, 0.1) | ||||
| 			background var(--desktopPostFormTextareaBg) | ||||
| 			border solid 1px var(--primaryAlpha01) | ||||
| 			border-top none | ||||
| 			border-radius 0 0 4px 4px | ||||
| 			transition border-color .3s ease | ||||
| @@ -583,7 +594,7 @@ root(isDark) | ||||
| 	> .mk-uploader | ||||
| 		margin 8px 0 0 0 | ||||
| 		padding 8px | ||||
| 		border solid 1px rgba($theme-color, 0.2) | ||||
| 		border solid 1px var(--primaryAlpha02) | ||||
| 		border-radius 4px | ||||
|  | ||||
| 	input[type='file'] | ||||
| @@ -600,22 +611,20 @@ root(isDark) | ||||
| 		width 110px | ||||
| 		height 40px | ||||
| 		font-size 1em | ||||
| 		color $theme-color-foreground | ||||
| 		background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%) | ||||
| 		color var(--primaryForeground) | ||||
| 		background var(--primary) | ||||
| 		outline none | ||||
| 		border solid 1px lighten($theme-color, 15%) | ||||
| 		border none | ||||
| 		border-radius 4px | ||||
|  | ||||
| 		&:not(:disabled) | ||||
| 			font-weight bold | ||||
|  | ||||
| 		&:hover:not(:disabled) | ||||
| 			background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%) | ||||
| 			border-color $theme-color | ||||
| 			background var(--primaryLighten5) | ||||
|  | ||||
| 		&:active:not(:disabled) | ||||
| 			background $theme-color | ||||
| 			border-color $theme-color | ||||
| 			background var(--primaryDarken5) | ||||
|  | ||||
| 		&:focus | ||||
| 			&:after | ||||
| @@ -626,7 +635,7 @@ root(isDark) | ||||
| 				right -5px | ||||
| 				bottom -5px | ||||
| 				left -5px | ||||
| 				border 2px solid rgba($theme-color, 0.3) | ||||
| 				border 2px solid var(--primaryAlpha03) | ||||
| 				border-radius 8px | ||||
|  | ||||
| 		&:disabled | ||||
| @@ -636,13 +645,13 @@ root(isDark) | ||||
| 		&.wait | ||||
| 			background linear-gradient( | ||||
| 				45deg, | ||||
| 				darken($theme-color, 10%) 25%, | ||||
| 				$theme-color              25%, | ||||
| 				$theme-color              50%, | ||||
| 				darken($theme-color, 10%) 50%, | ||||
| 				darken($theme-color, 10%) 75%, | ||||
| 				$theme-color              75%, | ||||
| 				$theme-color | ||||
| 				var(--primaryDarken10) 25%, | ||||
| 				var(--primary)              25%, | ||||
| 				var(--primary)              50%, | ||||
| 				var(--primaryDarken10) 50%, | ||||
| 				var(--primaryDarken10) 75%, | ||||
| 				var(--primary)              75%, | ||||
| 				var(--primary) | ||||
| 			) | ||||
| 			background-size 32px 32px | ||||
| 			animation stripe-bg 1.5s linear infinite | ||||
| @@ -661,7 +670,7 @@ root(isDark) | ||||
| 		right 138px | ||||
| 		margin 0 | ||||
| 		line-height 40px | ||||
| 		color rgba($theme-color, 0.5) | ||||
| 		color var(--primaryAlpha05) | ||||
|  | ||||
| 		&.over | ||||
| 			color #ec3828 | ||||
| @@ -679,7 +688,7 @@ root(isDark) | ||||
| 		width 40px | ||||
| 		height 40px | ||||
| 		font-size 1em | ||||
| 		color isDark ? $theme-color : rgba($theme-color, 0.5) | ||||
| 		color var(--desktopPostFormTransparentButtonFg) | ||||
| 		background transparent | ||||
| 		outline none | ||||
| 		border solid 1px transparent | ||||
| @@ -687,12 +696,12 @@ root(isDark) | ||||
|  | ||||
| 		&:hover | ||||
| 			background transparent | ||||
| 			border-color isDark ? rgba($theme-color, 0.5) : rgba($theme-color, 0.3) | ||||
| 			border-color var(--primaryAlpha03) | ||||
|  | ||||
| 		&:active | ||||
| 			color rgba($theme-color, 0.6) | ||||
| 			background isDark ? transparent : linear-gradient(to bottom, lighten($theme-color, 80%) 0%, lighten($theme-color, 90%) 100%) | ||||
| 			border-color rgba($theme-color, 0.5) | ||||
| 			color var(--primaryAlpha06) | ||||
| 			background linear-gradient(to bottom, var(--desktopPostFormTransparentButtonActiveGradientStart) 0%, var(--desktopPostFormTransparentButtonActiveGradientEnd) 100%) | ||||
| 			border-color var(--primaryAlpha05) | ||||
| 			box-shadow 0 2px 4px rgba(#000, 0.15) inset | ||||
|  | ||||
| 		&:focus | ||||
| @@ -704,7 +713,7 @@ root(isDark) | ||||
| 				right -5px | ||||
| 				bottom -5px | ||||
| 				left -5px | ||||
| 				border 2px solid rgba($theme-color, 0.3) | ||||
| 				border 2px solid var(--primaryAlpha03) | ||||
| 				border-radius 8px | ||||
|  | ||||
| 	> .dropzone | ||||
| @@ -713,13 +722,7 @@ root(isDark) | ||||
| 		top 0 | ||||
| 		width 100% | ||||
| 		height 100% | ||||
| 		border dashed 2px rgba($theme-color, 0.5) | ||||
| 		border dashed 2px var(--primaryAlpha05) | ||||
| 		pointer-events none | ||||
|  | ||||
| .mk-post-form[data-darkmode] | ||||
| 	root(true) | ||||
|  | ||||
| .mk-post-form:not([data-darkmode]) | ||||
| 	root(false) | ||||
|  | ||||
| </style> | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user