new branch
This commit is contained in:
		
						commit
						8eac634cb8
					
				
					 22 changed files with 1329 additions and 0 deletions
				
			
		
							
								
								
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| out | ||||
| node_modules | ||||
| package-lock.json | ||||
| 
 | ||||
| diskort.xpi | ||||
| btfl.css | ||||
							
								
								
									
										31
									
								
								Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| 
 | ||||
| OSTYLES = $(wildcard src/style/*.less) | ||||
| OSCRIPTS= $(wildcard src/script/*.coffee) | ||||
| 
 | ||||
| STYLES  = $(OSTYLES:src/style/%.less=out/css/%.css) | ||||
| SCRIPTS = $(OSCRIPTS:src/script/%.coffee=out/js/%.js) | ||||
| 
 | ||||
| all: prepare build | ||||
| build: style script | ||||
| dist: xpi | ||||
| 
 | ||||
| style:  out/css/base.css | ||||
| script: $(SCRIPTS) | ||||
| 
 | ||||
| prepare: | ||||
| 	npm i lessc coffeescript | ||||
| 	mkdir -p out | ||||
| 	mkdir -p out/css | ||||
| 	mkdir -p out/js | ||||
| 
 | ||||
| diskort.xpi xpi firefox: build | ||||
| 	cp manifest.json out/ | ||||
| 	cd out; zip -r diskort.xpi manifest.json css js | ||||
| 	@echo "goto about:config and set xpinstall.signatures.required to false" | ||||
| 	@echo "then goto about:addons -> settings icon below search -> install add-on from file" | ||||
| 
 | ||||
| out/css/base.css: src/style/base.less $(OSTYLES) | ||||
| 	npx lessc $< > $@ | ||||
| 
 | ||||
| out/js/%.js: src/script/%.coffee | ||||
| 	npx coffee --no-header -bco $@ $< | ||||
							
								
								
									
										
											BIN
										
									
								
								ext.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ext.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 544 B | 
							
								
								
									
										19
									
								
								license
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								license
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| Zlib License | ||||
| 
 | ||||
| Copyright (c) 2022 Er2 <er2@dismail.de> | ||||
| 
 | ||||
| This software is provided 'as-is', without any express or implied | ||||
| warranty. In no event will the authors be held liable for any damages | ||||
| arising from the use of this software. | ||||
| 
 | ||||
| Permission is granted to anyone to use this software for any purpose, | ||||
| including commercial applications, and to alter it and redistribute it | ||||
| freely, subject to the following restrictions: | ||||
| 
 | ||||
| 1. The origin of this software must not be misrepresented; you must not | ||||
|    claim that you wrote the original software. If you use this software | ||||
|    in a product, an acknowledgement in the product documentation would be | ||||
|    appreciated but is not required. | ||||
| 2. Altered source versions must be plainly marked as such, and must not be | ||||
|    misrepresented as being the original software. | ||||
| 3. This notice may not be removed or altered from any source distribution. | ||||
							
								
								
									
										34
									
								
								manifest.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								manifest.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| { | ||||
|   "manifest_version": 2, | ||||
|   "name": "DisKort", | ||||
|   "version": "3.0.0", | ||||
| 
 | ||||
|   "description": "Custom theme for Discord", | ||||
| 
 | ||||
|   "icons": { | ||||
|     "48": "ext.png" | ||||
|   }, | ||||
| 
 | ||||
|   "permissions": [ | ||||
|     "https://raw.githubusercontent.com/Er2ch/diskort/*", | ||||
|     "*://discord.com/", | ||||
|     "webRequest", | ||||
|     "webRequestBlocking" | ||||
|   ], | ||||
| 
 | ||||
|   "background": { | ||||
|     "scripts": ["js/bg.js"], | ||||
|     "persistent": true | ||||
|   }, | ||||
| 
 | ||||
|   "content_scripts": [{ | ||||
|     "matches": ["*://discord.com/*"], | ||||
|     "js": ["js/inj.js"] | ||||
|   }], | ||||
| 
 | ||||
|   "browser_specific_settings": { | ||||
|     "gecko": { | ||||
|       "id": "{7e79557e-5773-4be8-b0e2-9e35b34b692c}" | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										9
									
								
								package.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								package.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| { | ||||
|   "name": "diskort", | ||||
|   "version": "3.0.0", | ||||
|   "description": "Custom script and style engine for Discord", | ||||
|   "dependencies": { | ||||
|     "coffeescript": "^2.6.1", | ||||
|     "lessc": "^1.0.2" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										40
									
								
								readme.org
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								readme.org
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| 
 | ||||
| *DisKort* - extension for browser which decreases Discord elements. | ||||
| 
 | ||||
| Currently it's in beta, more of design was merged into css. | ||||
| 
 | ||||
| [[https://addons.mozilla.org/en-US/firefox/addon/diskort/][Add to Firefox]] | ||||
| 
 | ||||
| * Installation | ||||
| 
 | ||||
| ** Firefox | ||||
| 
 | ||||
| Highly recommend to enable backdrop-filter for acrylic. | ||||
| 1. Go to ~about:config~ | ||||
| 2. Set ~layout.css.backdrop-filter.enabled~ and ~gfx.webrender.all~ to true. | ||||
| 3. Reload Discord. | ||||
| 
 | ||||
| Debug mode: | ||||
| 
 | ||||
| 1. Download [[https://gitdab.com/er2/diskort/archive/dev.zip][dev tag archive]] and unpack it. | ||||
| 2. Copy btfl.css from [[https://raw.githubusercontent.com/Er2ch/diskort/main/btfl.css][GitHub]] or compile own. | ||||
| 3. Go to ~about:debugging#/runtime/this-firefox~ | ||||
| 3. Click on *Load Temponary Add-on...* | ||||
| 4. Choose any file in extension folder. | ||||
| 
 | ||||
| ** Chrome, etc. | ||||
| 
 | ||||
| Release mode: | ||||
| 
 | ||||
| 1. Go to ~chrome://extensions/~ | ||||
| 2. Enable ~Developer mode~. | ||||
| 3. Create own (~Pack extension~) or download [[https://gitdab.com/er2/diskort/releases][from releases]]. | ||||
| 4. Drag and drop ~diskort.crx~ to browser. | ||||
| 
 | ||||
| Debug mode: | ||||
| 
 | ||||
| 1. Download [[https://gitdab.com/er2/diskort/archive/dev.zip][dev tag archive]] and unpack it. | ||||
| 2. Copy btfl.css from [[https://raw.githubusercontent.com/Er2ch/diskort/main/btfl.css][GitHub]] or compile own. | ||||
| 3. Go to ~chrome://extensions/~ | ||||
| 3. Enable ~Developer mode~. | ||||
| 4. Click on ~Load unpacked~ and choose extension folder. | ||||
							
								
								
									
										28
									
								
								src/script/bg.coffee
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/script/bg.coffee
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| ### DisKort | ||||
| # (c) Er2 2022 | ||||
| # Zlib License | ||||
| ### | ||||
| 
 | ||||
| # Disable CSP | ||||
| chrome.webRequest.onHeadersReceived.addListener( | ||||
|   (det) -> | ||||
|     for head from det.responseHeaders | ||||
|       n = head.name.toLowerCase() | ||||
|       head.value = '' if n is 'content-security-policy' or n == 'content-security-policy-report-only' | ||||
|     { responseHeaders: det.responseHeaders } | ||||
| 
 | ||||
|   , urls: ['<all_urls>'] | ||||
|   , ['blocking', 'responseHeaders'] | ||||
| ) | ||||
| 
 | ||||
| # Simulate user-agent | ||||
| chrome.webRequest.onBeforeSendHeaders.addListener( | ||||
|   (det) -> | ||||
|     for head from det.requestHeaders | ||||
|       n = head.name.toLowerCase() | ||||
|       head.value = 'DisKort/3.0 (Linux) Firefox/99.0' if n is 'user-agent' | ||||
|     { requestHeaders: det.requestHeaders } | ||||
| 
 | ||||
|   , urls: ['<all_urls>'] | ||||
|   , ['blocking', 'requestHeaders'] | ||||
| ) | ||||
							
								
								
									
										23
									
								
								src/script/inj.coffee
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/script/inj.coffee
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| ### DisKort | ||||
| # (c) Er2 2022 | ||||
| # Zlib License | ||||
| ### | ||||
| 
 | ||||
| ### Base URL | ||||
| # Source code is here: https://gitdab.com/er2/diskort | ||||
| # / at end is required | ||||
| ### | ||||
| base = 'https://raw.githubusercontent.com/Er2ch/diskort/main/' | ||||
| 
 | ||||
| inject = -> | ||||
|   try | ||||
|     resp = await fetch base + 'btfl.css' | ||||
|     text = await resp.text() | ||||
|     s = document.createElement 'style' | ||||
|     s.innerHTML = text | ||||
|     document.head.appendChild s | ||||
|   catch e | ||||
|     console.error e | ||||
| 
 | ||||
| # Call it! | ||||
| inject() | ||||
							
								
								
									
										32
									
								
								src/style/base.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/style/base.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | |||
| /** DisKort | ||||
|  * (c) Er2 2022 <er2@dismail.de> | ||||
|  * Zlib License | ||||
|  */ | ||||
| 
 | ||||
| @no-nitro:  true; | ||||
| @no-banner: false; | ||||
| 
 | ||||
| @round:    8px; | ||||
| @rounder:  16px; | ||||
| @roundest: 24px; // text area | ||||
| 
 | ||||
| @div-width: (@rounder / 2); | ||||
| @tab-height: 40px; | ||||
| 
 | ||||
| // Required | ||||
| @import "func"; | ||||
| @import "fixes"; | ||||
| 
 | ||||
| // Optional | ||||
| @import "hide"; | ||||
| @import "mobile"; | ||||
| @import "nitro"; | ||||
| 
 | ||||
| // Style | ||||
| @import "materials"; | ||||
| @import "style"; | ||||
| @import "ui"; | ||||
| @import "dimmer"; | ||||
| @import "profile"; | ||||
| @import "people"; | ||||
| @import "settings"; | ||||
							
								
								
									
										47
									
								
								src/style/dimmer.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/style/dimmer.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | |||
| .theme-dimmer { | ||||
|   --header-primary:       #dedede; | ||||
|   --header-secondary:     #cacaca; | ||||
|   --text-normal:          #dcddde; | ||||
|   --text-muted:           #cbcccd; | ||||
|   --interactive-normal:   #cacaca; | ||||
|   --interactive-hover:    #dedede; | ||||
|   --interactive-active:   #dcddde; | ||||
|   --interactive-muted:    #bebebe; | ||||
|   --background-primary:   #3e3e3e; | ||||
|   --background-secondary: #2e2e2e; | ||||
|   --background-secondary-alt: #2e2e2e; | ||||
|   --background-accent:    #4f545c; | ||||
|   --background-floating:  #18191c; | ||||
|   --background-tertiary:  #1e1e1e; | ||||
|   --input-background:     #1e1e1e; | ||||
|   color: var(--header-primary); | ||||
| 
 | ||||
|   & [class*="close-"] { | ||||
|     color: var(--interactive-normal); | ||||
| 
 | ||||
|     &:hover | ||||
|     { color: var(--interactive-hover); } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="layer-"] div.theme-light, | ||||
| div[class^="downloadApps-"] { | ||||
|   &:extend(.theme-dimmer all); | ||||
| 
 | ||||
|   div[class*="root-"] { | ||||
|     background-color: var(--background-secondary); | ||||
|   } | ||||
| 
 | ||||
|   div[class*="footer-"] { | ||||
|     background-color: var(--background-primary); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="downloadApps"] { | ||||
|   & { | ||||
|     background-color: var(--background-secondary) !important; | ||||
|   } | ||||
|   h3, div[class*="footer-"] { | ||||
|     color: var(--header-primary); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										72
									
								
								src/style/fixes.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								src/style/fixes.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| // fix guild selector at left part | ||||
| ul[data-list-id="guildsnav"] div[class^="scroller-"] { | ||||
|   display: flex; | ||||
|   flex-direction: column; | ||||
|   overflow: hidden !important; | ||||
| 
 | ||||
|   // servers | ||||
|   & > div[aria-label] { | ||||
|     overflow: hidden scroll; | ||||
|     scrollbar-width: none; | ||||
|     flex-grow: 1; | ||||
| 
 | ||||
|     // add button | ||||
|     & + div { | ||||
|       margin-top: 4px; | ||||
|       // all others | ||||
|       & ~ div | ||||
|       { &:extend(.hide); } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="messagesWrapper-"] div { | ||||
|   scrollbar-width: thin; | ||||
| } | ||||
| 
 | ||||
| #emoji-picker-tab-panel { | ||||
|   &:not([role="dialog"]) { | ||||
|     // if add reaction (role=dialog), it breaks | ||||
|     position: absolute; | ||||
|     top: 0; bottom: 0; | ||||
|     left: 0; right: 0; | ||||
|   } | ||||
| 
 | ||||
|   div[class^="wrapper-"] { | ||||
|     top: 0; | ||||
|     border-radius: 5px 0 0 5px; // for add reaction | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class*="fullscreenOnMobile"] div[class^="flex"] * { | ||||
|   // fix overflow | ||||
|   overflow: hidden; | ||||
| } | ||||
| 
 | ||||
| div[class*="templatesList-"] { | ||||
|   // fix tempates list (it was removed) | ||||
|   height: 128px; | ||||
| } | ||||
| 
 | ||||
| // Fix positioning | ||||
| div[class^="toolsContainer-"] { // in settings | ||||
|   position: fixed !important; | ||||
|   right: 21px; | ||||
|   padding: 0; | ||||
|   margin-top: 60px; | ||||
|   border-radius: 16px; | ||||
| 
 | ||||
|   & > div { | ||||
|     position: unset !important; | ||||
| 
 | ||||
|     div[class^="container"] > * { | ||||
|       background-color: var(--background-nested-floating); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="contentContainer-"] div[class*="stickyHeader-"] { | ||||
|   padding-left: 0; | ||||
|   padding-right: 0; | ||||
|   margin: 0; | ||||
| } | ||||
							
								
								
									
										31
									
								
								src/style/func.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/style/func.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| .left-border(@r: 0) { | ||||
|   border-top-left-radius:    @r !important; | ||||
|   border-bottom-left-radius: @r !important; | ||||
| } | ||||
| 
 | ||||
| .right-border(@r: 0) { | ||||
|   border-top-right-radius:    @r !important; | ||||
|   border-bottom-right-radius: @r !important; | ||||
| } | ||||
| 
 | ||||
| .bottom-border(@r: 0) { | ||||
|   border-bottom-left-radius:  @r !important; | ||||
|   border-bottom-right-radius: @r !important; | ||||
| } | ||||
| 
 | ||||
| .top-border(@r: 0) { | ||||
|   border-top-left-radius:  @r !important; | ||||
|   border-top-right-radius: @r !important; | ||||
| } | ||||
| 
 | ||||
| .radius(@r: 0) { | ||||
|   border-radius: @r !important; | ||||
| } | ||||
| 
 | ||||
| .hide { | ||||
|   all: unset    !important; | ||||
|   display: none !important; | ||||
|   width:   0    !important; | ||||
|   height:  0    !important; | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										95
									
								
								src/style/hide.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								src/style/hide.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,95 @@ | |||
| 
 | ||||
| // Site | ||||
| [class*="perksContainer-"], | ||||
| [class^="DocSearch"], // Algolia, f you | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| #app-mount div:not([class]) div[class=""] { | ||||
|   div:not([class]),                             // main page content | ||||
|   div div[class*="background-"],                // nitro animation at top | ||||
|   div[class^="grid-"] div[class^="animation-"], // nitro animation at bottom | ||||
|   { &:extend(.hide); } | ||||
| } | ||||
| 
 | ||||
| // Remove background (invite, login) | ||||
| [class*="artwork-"], | ||||
| div[class^="characterBackground-"] [class*="rightSplit-"], | ||||
| div[class^="art-"], | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| // Nicks | ||||
| [class^="username-"] { | ||||
|   li[class^="messageListItem-"] | ||||
|    [class*="cozyMessage-"] &,   // inside message | ||||
|   :not([class^="headerText-"]) | ||||
|    > div[class*="nameTag-"] &, // outside message | ||||
|   { &:extend(.hide); } | ||||
| } | ||||
| 
 | ||||
| [class^="discrimBase-"], | ||||
| div[class^="discordTag-"] [class^="username-"], // friends tab | ||||
| div[class^="nameTag-"], | ||||
| [class^="usernameInnerRow-"], // at settings | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| // Suggestions | ||||
| button[class*="followButton-"], // at top in channels | ||||
| [class^="nowPlaying"], // in friends tab | ||||
| div[class^="threadSuggestionBar-"], // create thread because many replies | ||||
| div[class^="welcomeCTA-"], // wave to say hi on server | ||||
| div[role="separator"]:not([id$="new-messages-bar"]), // aren't needed | ||||
| 
 | ||||
| div[class^="channelNotice-"], // sh** at bottom of server name like invite people, server boost etc. | ||||
| h2[class^="privateChannelsHeaderContainer"], // direct messages label | ||||
| 
 | ||||
| div[class*="templatesList-"] button[class^="container-"] ~ *, // templates are really useless | ||||
| 
 | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| // Emoji picker | ||||
| #gif-picker-tab, #sticker-picker-tab, | ||||
| #emoji-picker-tab-panel | ||||
|  div[class^="emojiPicker-"] | ||||
|  > div[class^="header-"], | ||||
| nav[class^="nav-"], // breaks emoji panel, fixed at fixes.less | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| // Search | ||||
| nav > [class^="searchBar-"], // in dm | ||||
| [role^="tab"] > [class^="searchBar-"], // in tabs | ||||
| div[class^="toolbar-3_"] > :nth-child(3) | ||||
|  ~ *:not([class^="search-"]), // remove after 3 elements except search | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| // Text area | ||||
| div[class^="channelTextArea-"] { | ||||
|   div div > div[class^="buttons-"] { // button | ||||
|     & > button // gift button, f you | ||||
|     { &:extend(.hide); } | ||||
| 
 | ||||
|     & > div.expression-picker-chat-input-button { | ||||
|       &:not(:nth-child(4)) // except emoji (and send button, if exists) | ||||
|       { &:extend(.hide); } | ||||
|     } | ||||
|   } | ||||
|   & > div[class^="scrollableContainer-"] | ||||
|    div[class^="divider-"] // breaks redesigned text area | ||||
|   { &:extend(.hide); } | ||||
| } | ||||
| 
 | ||||
| // Other | ||||
| div[class^="autocompleteShadow-"], // bugged | ||||
| [class^="unreadPill-"], // NEW at right, not needed | ||||
| div[class^="overviewSidebar-"], // at community creation, not needed | ||||
| 
 | ||||
| form::before, // message input shadow | ||||
| div[class^="children-"]::after, // shadow at title | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| div[class^="base-"] div[class^="children-"] { | ||||
|   // channel title | ||||
|   div[class^="divider-"] { | ||||
|     &, & ~ div:not([class^="tabBar-"]), | ||||
|     { &:extend(.hide); } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										118
									
								
								src/style/materials.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								src/style/materials.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,118 @@ | |||
| // Mica-like material from Windows 11 | ||||
| 
 | ||||
| [class^="sidebar-"] { | ||||
|   &, & > nav { | ||||
|     background-color: transparent; | ||||
|   } | ||||
| 
 | ||||
|   & > nav, | ||||
|   div[class*="scroller"] { | ||||
|     .top-border(@rounder); | ||||
|   } | ||||
| 
 | ||||
|   div[class*="scroller"] { | ||||
|     background-color: var(--background-secondary); | ||||
|   } | ||||
| 
 | ||||
|   nav[class^="private"] { | ||||
|     &::before { | ||||
|       content: "Discord"; | ||||
|       color: var(--header-primary); | ||||
|       margin: ((48px - 20px) / 2) 16px; // 20px is line-height | ||||
|       font-size: 15px; | ||||
|       line-height: 20px; | ||||
|       font-weight: 500; | ||||
|       font-family: var(--font-display); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   section { // bottom panel | ||||
|     .bottom-border(@rounder); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="base-"] > div[class^="content-"] > div[class^="container"], | ||||
| div[class^="chat-"] | ||||
| { | ||||
|   background-color: unset; | ||||
|   & > div { | ||||
|     background-color: var(--background-primary); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| [class^="sidebar"] header, | ||||
| [class^="chat"] > section:not([class^="chat"]), | ||||
| [class^="container-"] > section { | ||||
|   background-color: var(--background-tertiary) !important; | ||||
| } | ||||
| 
 | ||||
| @keyframes glow { | ||||
|   from { box-shadow: 0 0 2px 4px var(--interactive-normal); } | ||||
|   to   { box-shadow: 0 0 1px 2px var(--interactive-muted); } | ||||
| } | ||||
| 
 | ||||
| [class^="item-"] { | ||||
|   &[class*="focused-"] { | ||||
|     background-color: var(--text-muted); | ||||
|     color: var(--interactive-active); | ||||
|     animation: glow 0.7s linear infinite alternate; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // Acrylic | ||||
| .acrylic { | ||||
|   --acrylic-blur: @round; | ||||
|   --acrylic-color: var(--background-secondary-alt); | ||||
|   --acrylic-opacity: 50%; | ||||
| 
 | ||||
|   &, & > *, div[class^="body"] { | ||||
|     background: unset; | ||||
|   } | ||||
| 
 | ||||
|   &::before, &::after { | ||||
|     border-radius: inherit; | ||||
|     position: absolute; | ||||
|     top: 0; bottom: 0; | ||||
|     left: 0; right: 0; | ||||
|     content: ""; | ||||
|     z-index: -1; | ||||
|   } | ||||
| 
 | ||||
|   &::before { | ||||
|     backdrop-filter: blur(var(--acrylic-blur)) saturate(125%); | ||||
|   } | ||||
|   &::after { | ||||
|     background-color: var(--acrylic-color); | ||||
|     background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAUVBMVEWFhYWDg4N3d3dtbW17e3t1dXWBgYGHh4d5eXlzc3OLi4ubm5uVlZWPj4+NjY19fX2JiYl/f39ra2uRkZGZmZlpaWmXl5dvb29xcXGTk5NnZ2c8TV1mAAAAG3RSTlNAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAvEOwtAAAFVklEQVR4XpWWB67c2BUFb3g557T/hRo9/WUMZHlgr4Bg8Z4qQgQJlHI4A8SzFVrapvmTF9O7dmYRFZ60YiBhJRCgh1FYhiLAmdvX0CzTOpNE77ME0Zty/nWWzchDtiqrmQDeuv3powQ5ta2eN0FY0InkqDD73lT9c9lEzwUNqgFHs9VQce3TVClFCQrSTfOiYkVJQBmpbq2L6iZavPnAPcoU0dSw0SUTqz/GtrGuXfbyyBniKykOWQWGqwwMA7QiYAxi+IlPdqo+hYHnUt5ZPfnsHJyNiDtnpJyayNBkF6cWoYGAMY92U2hXHF/C1M8uP/ZtYdiuj26UdAdQQSXQErwSOMzt/XWRWAz5GuSBIkwG1H3FabJ2OsUOUhGC6tK4EMtJO0ttC6IBD3kM0ve0tJwMdSfjZo+EEISaeTr9P3wYrGjXqyC1krcKdhMpxEnt5JetoulscpyzhXN5FRpuPHvbeQaKxFAEB6EN+cYN6xD7RYGpXpNndMmZgM5Dcs3YSNFDHUo2LGfZuukSWyUYirJAdYbF3MfqEKmjM+I2EfhA94iG3L7uKrR+GdWD73ydlIB+6hgref1QTlmgmbM3/LeX5GI1Ux1RWpgxpLuZ2+I+IjzZ8wqE4nilvQdkUdfhzI5QDWy+kw5Wgg2pGpeEVeCCA7b85BO3F9DzxB3cdqvBzWcmzbyMiqhzuYqtHRVG2y4x+KOlnyqla8AoWWpuBoYRxzXrfKuILl6SfiWCbjxoZJUaCBj1CjH7GIaDbc9kqBY3W/Rgjda1iqQcOJu2WW+76pZC9QG7M00dffe9hNnseupFL53r8F7YHSwJWUKP2q+k7RdsxyOB11n0xtOvnW4irMMFNV4H0uqwS5ExsmP9AxbDTc9JwgneAT5vTiUSm1E7BSflSt3bfa1tv8Di3R8n3Af7MNWzs49hmauE2wP+ttrq+AsWpFG2awvsuOqbipWHgtuvuaAE+A1Z/7gC9hesnr+7wqCwG8c5yAg3AL1fm8T9AZtp/bbJGwl1pNrE7RuOX7PeMRUERVaPpEs+yqeoSmuOlokqw49pgomjLeh7icHNlG19yjs6XXOMedYm5xH2YxpV2tc0Ro2jJfxC50ApuxGob7lMsxfTbeUv07TyYxpeLucEH1gNd4IKH2LAg5TdVhlCafZvpskfncCfx8pOhJzd76bJWeYFnFciwcYfubRc12Ip/ppIhA1/mSZ/RxjFDrJC5xifFjJpY2Xl5zXdguFqYyTR1zSp1Y9p+tktDYYSNflcxI0iyO4TPBdlRcpeqjK/piF5bklq77VSEaA+z8qmJTFzIWiitbnzR794USKBUaT0NTEsVjZqLaFVqJoPN9ODG70IPbfBHKK+/q/AWR0tJzYHRULOa4MP+W/HfGadZUbfw177G7j/OGbIs8TahLyynl4X4RinF793Oz+BU0saXtUHrVBFT/DnA3ctNPoGbs4hRIjTok8i+algT1lTHi4SxFvONKNrgQFAq2/gFnWMXgwffgYMJpiKYkmW3tTg3ZQ9Jq+f8XN+A5eeUKHWvJWJ2sgJ1Sop+wwhqFVijqWaJhwtD8MNlSBeWNNWTa5Z5kPZw5+LbVT99wqTdx29lMUH4OIG/D86ruKEauBjvH5xy6um/Sfj7ei6UUVk4AIl3MyD4MSSTOFgSwsH/QJWaQ5as7ZcmgBZkzjjU1UrQ74ci1gWBCSGHtuV1H2mhSnO3Wp/3fEV5a+4wz//6qy8JxjZsmxxy5+4w9CDNJY09T072iKG0EnOS0arEYgXqYnXcYHwjTtUNAcMelOd4xpkoqiTYICWFq0JSiPfPDQdnt+4/wuqcXY47QILbgAAAABJRU5ErkJggg==); | ||||
|     opacity: var(--acrylic-opacity); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // Acrylic patches | ||||
| div[class^="layers-"] { | ||||
|   & > div[class*="baseLayer"] { | ||||
|     opacity: 1 !important; | ||||
|   } | ||||
| 
 | ||||
|   & > div[class^="layer"]:not([class*="baseLayer"]) { | ||||
|     div[class*="View-"] { | ||||
|       --acrylic-color: var(--background-primary); | ||||
|       --acrylic-opacity: 80%; | ||||
|     } | ||||
|     &, & > div[class*="View-"], div[class*="scroller"] { | ||||
|       background: unset; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="header-"], | ||||
| div[class^="title"], | ||||
| div[class^="channelTextArea-"], | ||||
| div[class^="quickswitcher-"] div[class^="scroll"], | ||||
| div[class^="focusLock-"] > div, | ||||
| div[class^="avatar-"], | ||||
| { | ||||
|   background: unset !important; | ||||
|   border-color: transparent; | ||||
|   scrollbar-color: var(--scrollbar-auto-scrollbar-color-track) transparent; | ||||
| } | ||||
							
								
								
									
										53
									
								
								src/style/mobile.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/style/mobile.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,53 @@ | |||
| // TODO: comment this | ||||
| 
 | ||||
| @media screen and (max-device-width: 800px) { | ||||
|   /* FIXME: add close buttons to emoji panel */ | ||||
| 
 | ||||
|   [class^="channel-"] { max-width: unset; margin: 0 8px; } | ||||
|   [class^="layer-"] { padding: 0; margin: auto; } | ||||
|   [class^="layer-"] > [class^="container-"], | ||||
|   [class^="standardSidebarView-"] { overflow-x: scroll; } | ||||
|   [class^="content-"] [class^="sidebar"] { width: calc(50% - 8px - 72px); } | ||||
|   [class^="chat-"] { width: 100%; } | ||||
|   [class^="tools"] { position: unset !important; } | ||||
| 
 | ||||
|   [class*="positionLayer-"], | ||||
|   [class*="fullscreenOnMobile"] { | ||||
|     overflow: auto; | ||||
|     width: 100%; min-width: 100%; | ||||
|   } | ||||
|   [class^="positionLayer-"] { | ||||
|     position: absolute; | ||||
|     top: 0 !important; | ||||
|     left: 0 !important; | ||||
|     right: 0 !important; | ||||
|     bottom: 0 !important; | ||||
|   } | ||||
|   [class*="fullscreenOnMobile"] [class^="body"] { | ||||
|     width: 100%; height: 100%; | ||||
|   } | ||||
| 
 | ||||
|   [class^="side-"] > [class^="item-"] { | ||||
|     margin-top: 4px !important; | ||||
|     padding: 6px 10px !important; | ||||
|   } | ||||
| 
 | ||||
|   [class^="side-"] > [class^="item-"], | ||||
|   :not([class*="pill"]):not([class*="Pill"]) > [class*="item-"], | ||||
|   :not([class*="pill"]):not([class*="Pill"]) > [role="tab"], | ||||
|   [class^="member-"], | ||||
|   #channels li, | ||||
|   div[class^="tabBarItem-"] { | ||||
|     margin-top: 8px; | ||||
|     padding: 8px; | ||||
|     font-size: 11pt; | ||||
|   } | ||||
| 
 | ||||
|   [class^="base-"], | ||||
|   [class^="contentRegion-"], | ||||
|   div[class^="sidebarRegion-"], // all in settings | ||||
|   { | ||||
|     width:     200%; | ||||
|     min-width: 200%; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										44
									
								
								src/style/nitro.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/style/nitro.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | |||
| 
 | ||||
| .nitroblock() when (@no-nitro = true) { | ||||
| 
 | ||||
| .nitro { &:extend(.hide); } | ||||
| 
 | ||||
| [class^="marketing"], | ||||
| [class*="tier"], | ||||
| [class*="perks-"], | ||||
| [class*="nitro"], | ||||
| [class^="upsell"], | ||||
| [class^="availabilityIndicator-"], | ||||
| div[class^="serverBoostTabItem-"], | ||||
| div[class*="hero"], | ||||
| div[class*="premium"], | ||||
| div[id*="premium"], | ||||
| div[class*="goal"], | ||||
| button[class^="shinyButton"], | ||||
| [class*="giftButton"], | ||||
| span[class^="questionMark-"], // at tag change | ||||
| div[class^="characterCount-"] div[class^="root-"], // at many characters | ||||
| [class^="clickableSticker-"], // stickers | ||||
| nav[class^="privateChannels-"] div div // Nitro tab at DM | ||||
|  [data-list-item-id$="nitro"], | ||||
| { &:extend(.nitro); } | ||||
| 
 | ||||
| #channels > ul { | ||||
|   div[class^="container-"] { | ||||
|     // boosts | ||||
|     &:extend(.nitro); | ||||
| 
 | ||||
|     // space | ||||
|     & + li { | ||||
|       padding-top: 0; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| } | ||||
| .nitroblock() when (@no-banner = true) { | ||||
|   [class^="bannerContainer-"], | ||||
|   [class*="banner-"] | ||||
|   { &:extend(.hide); } | ||||
| } | ||||
| .nitroblock(); | ||||
							
								
								
									
										22
									
								
								src/style/people.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/style/people.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | |||
| 
 | ||||
| [class^="membersGroup-"] // groups (roles) | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| [class^="membersWrap-"] { | ||||
|   // make it shorter | ||||
|   &, div[class^="members-"] { | ||||
|     min-width: 48px; | ||||
|     width: 0; | ||||
|   } | ||||
| 
 | ||||
|   // remove fixed height | ||||
|   div[class^="content-"] { | ||||
|     height: unset !important; | ||||
|     flex-grow: 0; | ||||
|   } | ||||
| 
 | ||||
|   div[class^="member-"] { | ||||
|     padding: 0; | ||||
|     margin-left: 0; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										146
									
								
								src/style/profile.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								src/style/profile.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,146 @@ | |||
| 
 | ||||
| div[class^="accountProfileCard-"] div[class^="userInfo-"] { | ||||
|   // settings | ||||
|   justify-content: left; | ||||
|   padding-top: 24px; | ||||
|   height: 56px; | ||||
| 
 | ||||
|   button { | ||||
|     margin-left: 32px; | ||||
|     margin-top:  -8px; | ||||
|   } | ||||
| 
 | ||||
|   div[class^="avatar-"] { | ||||
|     background-color: var(--background-tertiary) !important; | ||||
|     top: 0; | ||||
|     border-radius: 0 !important; | ||||
|     border-bottom-right-radius: 50% !important; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| .profile() when (@no-nitro = true) { | ||||
|   [class^="botTagVerified-"], | ||||
|   [class^="badgeList-"], | ||||
|   [class^="profileBadges-"], | ||||
|   { &:extend(.nitro); } | ||||
| } | ||||
| .profile() when (@no-banner = true) { | ||||
|   div[class^="listItemContents-"] div[class^="userInfo"] { | ||||
|     padding-top: 0; | ||||
|     div[class^="avatar-"] { | ||||
|       top: 0; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div[class^="userPopout-"], | ||||
|   div[class^="profileBannerPreview-"] { | ||||
|     div[class^="avatarWrapper"] { | ||||
|       top: 8px; // fix divider bug | ||||
|     } | ||||
| 
 | ||||
|     div[class^="headerTop-"] { | ||||
|       padding-top: 72px; // also fix divider bug | ||||
|       div[class^="headerText"] { | ||||
|         margin-left: 96px; // fix nickname | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div[class^="profileBanner"] div[class*="avatar"]:not([class^="imageUploaderInner"]) { | ||||
|     margin-left: -8px; | ||||
|     margin-top: -8px; | ||||
|   } | ||||
| } | ||||
| .profile(); | ||||
| 
 | ||||
| // Profile card in settings | ||||
| div[class^="accountProfileCard-"] { | ||||
|   div[class^="field-"]:nth-child(1) { | ||||
|     height: 0; | ||||
|     div[class^="constrainedRow-"] { | ||||
|       display: none; | ||||
|     } | ||||
|     button { | ||||
|       top: -48pt; | ||||
|       left: 300pt; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="banner-"] { | ||||
|   position: absolute; | ||||
|   width: inherit; | ||||
|   max-height: 84px; | ||||
|   &:extend(.rounder); | ||||
|   &[class*="popoutBanner"] { | ||||
|     position: relative; | ||||
|     max-height: 128px; | ||||
|     .bottom-border(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="avatarWrapper-"] { | ||||
|   margin-right: auto; // make some space after avatar (sidebar at bottom) | ||||
| } | ||||
| 
 | ||||
| // Redesigned profile page | ||||
| header div[class^="nameTagWithCustomStatus-"], | ||||
| header div[class^="nameTagNoCustomStatus-"] { | ||||
|   margin-bottom: 48px; // some space under avatar | ||||
|   margin-left:  160px; // after avatar, not before | ||||
| } | ||||
| 
 | ||||
| div[class^="focusLock-"]:not([aria-labelledby]) > div[class^="root-"][class*="small-"] { | ||||
|   flex-direction: row; | ||||
| 
 | ||||
|   header { | ||||
|     width: 260px; | ||||
|     margin: 24px; | ||||
| 
 | ||||
|     div[class^="avatar-"] { | ||||
|       top: 0; left: 0; | ||||
|       position: relative; | ||||
|     } | ||||
| 
 | ||||
|     div[class^="headerTop-"] { | ||||
|       position: unset; | ||||
|       justify-content: left; | ||||
|     } | ||||
| 
 | ||||
|     div[class^="nameTag"] { | ||||
|       width: 64px; | ||||
|       position: absolute; | ||||
|       margin-top: -84px; | ||||
|       margin-left: 130px; | ||||
|     } | ||||
| 
 | ||||
|     div[class^="customStatus"] { | ||||
|       margin-top: 16px; | ||||
|       padding: 0; | ||||
|     } | ||||
|   } | ||||
|   div[class^="body-"] { | ||||
|     border: none; | ||||
|     margin-left: 16px; | ||||
|     height: 370px; | ||||
|     & > * | ||||
|     { padding: 0 !important; } | ||||
|   } | ||||
|   div[class^="tabBarContainer"] | ||||
|   { border: none; } | ||||
|   div[class^="tabBar-"] { | ||||
|     flex-direction: column; | ||||
|     height: unset; | ||||
|     margin: 8px; | ||||
|   } | ||||
| 
 | ||||
|   div[class^="tabBarItem-"] { | ||||
|     margin-right: 0; | ||||
|     border-bottom: unset; | ||||
|     &:hover, &[class*="selected-"] { | ||||
|       border-right: 2px solid var(--interactive-active) !important; | ||||
|     } | ||||
|     .top-border(); | ||||
|     .left-border(@round); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										254
									
								
								src/style/settings.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										254
									
								
								src/style/settings.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,254 @@ | |||
| 
 | ||||
| div[class^="keybind-"], // true must know it! | ||||
| [class*="socialLink-"], // in change log | ||||
| div[class^="socialLinks-"], // in settings at bottom | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| // New sidebar in settings | ||||
| div[class^="standardSidebarView-"] { | ||||
|   flex-direction: column; | ||||
| 
 | ||||
|   div[class^="sidebarRegion-"] { | ||||
|     overflow: hidden; | ||||
|     flex-basis: unset; // bugfix to normalize height | ||||
|     flex-grow: 0; // fix scaling | ||||
| 
 | ||||
|     div[class^="header-"], | ||||
|     div[class^="separator-"] | ||||
|     { display: none; } | ||||
| 
 | ||||
|     & > div { | ||||
|       background: var(--background-primary); | ||||
|       scrollbar-width: thin; | ||||
|       overflow: auto hidden !important; | ||||
|       justify-content: left; | ||||
|       max-width: 100%; | ||||
| 
 | ||||
|       & > nav { | ||||
|         padding: 0; | ||||
|         width: unset; // to increase size | ||||
|         background: var(--background-secondary); // bugfix | ||||
|         & > div { | ||||
|           padding-left: @rounder; | ||||
|           flex-direction: row; | ||||
|           height: @tab-height; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div[class^="contentRegion-"] { | ||||
|     overflow-y: auto; | ||||
|     scrollbar-width: thin; | ||||
| 
 | ||||
|     * { | ||||
|       max-width: 100%; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[aria-controls*="nitro"], | ||||
| div[aria-controls="library-inventory-tab"], | ||||
| div[aria-controls="subscriptions-tab"], | ||||
| div[aria-controls="billing-tab"], | ||||
| div[aria-controls^="hypesquad"], | ||||
| div[aria-controls="stickers-tab"], | ||||
| { &:extend(.nitro); } | ||||
| 
 | ||||
| div[aria-controls="keybinds-tab"], | ||||
| div[aria-controls="game-activity-tab"], | ||||
| div[aria-controls="analytics-tab"], | ||||
| div[aria-controls="partner-tab"], | ||||
| { &:extend(.hide); } | ||||
| 
 | ||||
| .horiz-tab(@cols: 2) { | ||||
|   @gap: @div-width * 2; | ||||
|   @el-width: calc(100% / @cols - @gap); | ||||
|   display: flex; | ||||
|   flex-flow: row wrap; | ||||
|   column-gap: @gap; | ||||
|   row-gap: @gap / 2; | ||||
|   & > * { | ||||
|     width: @el-width; | ||||
|   } | ||||
| 
 | ||||
|   div[class^="divider"]:empty { | ||||
|     display: none; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #my-account-tab > div { | ||||
|   .horiz-tab(); | ||||
|   & > div:first-child { | ||||
|     width: 50%; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #profile-customization-tab div[class^="children"] | ||||
| div[class^="baseLayout-"] { | ||||
|   & > div:not([class]) { | ||||
|     width: 100%; | ||||
| 
 | ||||
|     div[class^="customizationSection-"] { | ||||
|       &:nth-child(2), &:nth-child(3) { | ||||
|         &:extend(.nitro); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div[class^="bioTextArea-"] { | ||||
|     height: 30vh; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // TrY AnImAtEd AvAtAr, eh... f you | ||||
| [class^="optionBox-"]:nth-child(2) | ||||
| { &:extend(.nitro); } | ||||
| 
 | ||||
| #connections-tab div[class^="children-"] { | ||||
|   flex-direction: row; | ||||
|   div[class^="accountList-"] { | ||||
|     margin-right: @div-width; | ||||
|     height: 100%; // decreases height? 0_0 | ||||
|   } | ||||
|   div[class^="connectionList-"] { | ||||
|     width: 100%; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #appearance-tab div[class^="children-"] { | ||||
|   .horiz-tab(); | ||||
| 
 | ||||
|   & > div:first-child { | ||||
|     width: 100%; | ||||
|   } | ||||
| 
 | ||||
|   div[class^="marginTop20-"] > div[class^="slider-"] { | ||||
|     margin-top: 28px; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #accessibility-tab div div[class^="children-"] { | ||||
|   & > div { | ||||
|     &:nth-child(2), | ||||
|     &:nth-child(3), | ||||
|     &:nth-child(6), | ||||
|     &:nth-child(7) | ||||
|     { &:extend(.hide); } | ||||
| 
 | ||||
|     &:nth-child(4) { | ||||
|       margin-top: @div-width * 2; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #notifications-tab div[class^="children"] { | ||||
|   div:nth-child(6) | ||||
|   { &:extend(.hide); } | ||||
| } | ||||
| 
 | ||||
| #language-tab div[class^="children-"] { | ||||
|   div div > div[role="radiogroup"] { | ||||
|     .horiz-tab(3); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #streamer-mode-tab div[class^="children-"] { | ||||
|   .horiz-tab(); | ||||
|   & > * { | ||||
|     &:nth-child(1), | ||||
|     &:nth-child(2) | ||||
|     { width: 100%; } | ||||
|     &:nth-child(3) | ||||
|     { display: none; } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // Server settings | ||||
| #overview-tab div[class^="children-"] > div { | ||||
|   // system messages | ||||
|   &:nth-child(3) { | ||||
|     .horiz-tab(); | ||||
| 
 | ||||
|     & > :nth-child(1), | ||||
|     & > :nth-child(2) | ||||
|     { width: 100%; } | ||||
| 
 | ||||
|     & > :nth-child(3) // description | ||||
|     { display: none; } | ||||
|   } | ||||
| 
 | ||||
|   // notification settings | ||||
|   &:nth-child(4) > div > div:last-child { | ||||
|     .horiz-tab(); | ||||
|   } | ||||
| 
 | ||||
|   // nitro features | ||||
|   &:nth-child(5) > div > div:last-child { | ||||
|     .horiz-tab(3); | ||||
|     & > * { | ||||
|       padding: 0; | ||||
|       margin: 0; | ||||
|       border: none; | ||||
|     } | ||||
|     & > div:first-child div[class^="flexChild-"] | ||||
|     { display: none; } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #moderation-tab div[class^="children-"] { | ||||
|   div[role="radiogroup"] { | ||||
|     .horiz-tab(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[data-list-id="audit-log"] { | ||||
|   .horiz-tab(); | ||||
|   & > * { | ||||
|     height: min-content; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #integrations-tab > div:nth-child(2) { | ||||
|   .horiz-tab(); | ||||
| 
 | ||||
|   img[class^="iconWrapper-"] { | ||||
|     width: unset; | ||||
|   } | ||||
| 
 | ||||
|   button[class^="createButton-"], | ||||
|   [class^="sectionHeader-"], | ||||
|   & > div:first-child { | ||||
|     width: 100%; | ||||
|     margin-bottom: @div-width * 3; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #widget-tab div[class^="children-"] { | ||||
|   &, & > div[class^="infoWrapper-"] { | ||||
|     .horiz-tab(); | ||||
|     row-gap: @gap * 2; | ||||
|   } | ||||
| 
 | ||||
|   img[class^="infoItem-"] | ||||
|   { display: none; } | ||||
| 
 | ||||
|   div[class^="infoItem-"], | ||||
|   & > div:first-child, | ||||
|   & > div:last-child { | ||||
|     width: 100%; | ||||
|     flex-basis: unset; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #community-tab > div[class^="container-"] { | ||||
|   & > div[class^="banner-"] | ||||
|   { &:extend(.hide); } | ||||
| } | ||||
| 
 | ||||
| #discovery-tab > div[class^="container-"] { | ||||
|   .horiz-tab(); | ||||
|   span[class*="Button"] { | ||||
|     align-self: start; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										149
									
								
								src/style/style.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								src/style/style.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,149 @@ | |||
| .round   { .radius(@round); } | ||||
| .rounder { .radius(@rounder); } | ||||
| 
 | ||||
| // Space between sidebar and chat | ||||
| div[class^="sidebar-"] { | ||||
|   margin-right: @div-width; | ||||
| } | ||||
| 
 | ||||
| // Old-school embed | ||||
| [class*="embed"] { | ||||
|   .left-border(3px); | ||||
|   max-width: unset; | ||||
|   background: unset; | ||||
| } | ||||
| 
 | ||||
| // Round | ||||
|   // UI parts | ||||
|   li[class^="channel-"], | ||||
|   [class^="avatar-"], | ||||
|   [role="dialog"], | ||||
|   div[class^="menu-"] [role="menuitem"], | ||||
|   div[class^="role-"], | ||||
|   div[class^="colorPicker"] div div[class^="saturation"] div, | ||||
|   #channels ul li div > div[class^="content-"], | ||||
| 
 | ||||
|   // Input | ||||
|   div[class^="searchBox-"], | ||||
|   [class*="input"], | ||||
|   input[class^="inputDefault-"], | ||||
|   div[class*="TextArea"], | ||||
|   textarea, | ||||
| { &:extend(.round); } | ||||
| 
 | ||||
| // Rounder | ||||
|   // Popouts | ||||
|   [class^="authBox"], // login | ||||
|   [role="menu"], | ||||
|   div[class*="popout"], | ||||
|   div[class*="Popout"], | ||||
|   div[class*="fullscreenOnMobile"], | ||||
|   div[class*="root"] div[class^="flex-"], | ||||
| 
 | ||||
|   // UI parts | ||||
|   div[class^="chat-"], | ||||
|   div[class^="noticeRegion"] > div, // you have unsaved changes bottom bar | ||||
|   [class^="resultsGroup-"], // search | ||||
|   div[class^="auditLog-"], | ||||
|   div[class^="auditLog-"] > div, | ||||
| 
 | ||||
|   div[class^="connectedAccount-"], // in profile | ||||
|   div[class^="profileBanner"], | ||||
|   div[class^="accountProfile"], | ||||
| 
 | ||||
|   div[class^="quickswitcher-"] input, | ||||
| 
 | ||||
|   div[class^="autocomplete-"], // input | ||||
|   div[class^="pictureInPicture-"], | ||||
| 
 | ||||
|   div[class^="select-"], | ||||
|   div[class^="messagesWrapper-"] div:not([class*="Inner"]):not([class^="filename"]), | ||||
| 
 | ||||
|   div[class^="layer-"] > div[class^="container-"], | ||||
|   div[class^="base-"] div[class^="content-"] > div:nth-child(2), | ||||
|   div[class^="guildList-"] div[class^="container-"], | ||||
|   div[class^="container"] > div, | ||||
|   div[class^="chat-"] > div[class^="content-"], | ||||
| { &:extend(.rounder); } | ||||
| 
 | ||||
| div[class^="auditLog"] { | ||||
|   div[class^="headerExpanded-"] | ||||
|   { .bottom-border(); } | ||||
|   div[class^="changeDetails-"] | ||||
|   { .top-border(); } | ||||
| } | ||||
| 
 | ||||
| div[class^="messagesWrapper-"] | ||||
| div[class^="message-"][class*="mentioned"] | ||||
| { .left-border(4px); } | ||||
| 
 | ||||
| // no shadows | ||||
| section, header, | ||||
| div[class^="content-"]::before, | ||||
| div[class^="tabBody-"]::before | ||||
| { box-shadow: unset !important; } | ||||
| 
 | ||||
| // Pins | ||||
| div[class^="messageGroupWrapper-"] { | ||||
|   border: none; | ||||
|   background: unset; | ||||
| } | ||||
| 
 | ||||
| // Redesigned text input | ||||
| 
 | ||||
| div[class^="attachedBars-"], | ||||
| div[class^="messagesWrapper-"] div[class*="Bar-"]:not([class^="newMessagesBar-"]) { | ||||
|   bottom: 16px; | ||||
|   padding: 0; | ||||
| } | ||||
| 
 | ||||
| div[class^="attachedBars-"] | ||||
| { position: relative; } | ||||
| 
 | ||||
| div[class^="channelTextArea-"] { | ||||
|   & > div[class^="scrollableContainer-"] { | ||||
|     background-color: unset; | ||||
| 
 | ||||
|     button[class^="attachButton-"], | ||||
|     div[class^="textArea-"], | ||||
|     div[class^="buttons-"] { | ||||
|       background-color: var(--background-secondary); | ||||
|       border-radius: @roundest !important; | ||||
|       margin: 0; | ||||
|     } | ||||
| 
 | ||||
|     & > div[class^="inner-"] | ||||
|     { padding: 0; } | ||||
| 
 | ||||
|     button[class^="attachButton-"] { | ||||
|       padding: 8px; | ||||
|       width: auto; | ||||
|       height: auto; | ||||
|     } | ||||
| 
 | ||||
|     div[class^="textArea-"] { | ||||
|       margin-left: 8px; | ||||
|       .right-border(); | ||||
| 
 | ||||
|       div > * { left: (@roundest / 2); } | ||||
|     } | ||||
| 
 | ||||
|     div[class^="buttons-"] { | ||||
|       height: auto; // to match input height | ||||
|       & > * { | ||||
|         align-items: center; // center buttons | ||||
|       } | ||||
|       .left-border(); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| [role="menu"], | ||||
| [role="dialog"]:not([class^="focusLock-"]), | ||||
| div[class^="focusLock-"] > div, | ||||
| div[class^="channelHeader-"], | ||||
| div[class^="layers-"] > div[class^="layer-"] div[class*="View-"], | ||||
| div[class*="stickyHeader-"], | ||||
| { | ||||
|   &:extend(.acrylic all); | ||||
| } | ||||
							
								
								
									
										76
									
								
								src/style/ui.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								src/style/ui.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,76 @@ | |||
| // UI element changes | ||||
| 
 | ||||
| // slider | ||||
| div[class^="slider-"] { | ||||
|   div[class^="track-"] { | ||||
|     div[class^="grabber-"] { | ||||
|       @half: (@rounder / 2); | ||||
|       position: relative; | ||||
|       width: @rounder; | ||||
|       height: @rounder; | ||||
|       border: none; | ||||
|       border-radius: @half; | ||||
|       top: @half * 1.5; | ||||
|       margin-top: unset; | ||||
|       margin-left: -@half; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // tabs | ||||
| div[role="tab"], | ||||
| div[class^="tabBarItem-"] { | ||||
|   .bottom-border(); | ||||
|   margin: 0; | ||||
|   margin-top: 8px; | ||||
|   margin-right: 16px; | ||||
|   padding: 4px 8px; | ||||
| 
 | ||||
|   &:hover, | ||||
|   &[class*="selected-"] { | ||||
|     background-color: var(--interactive-muted) !important; | ||||
|     color: var(--text-normal) !important; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // slider | ||||
| div[class^="container-"] { | ||||
|   &[class*="disabled-"] { | ||||
|     cursor: not-allowed; | ||||
|   } | ||||
| 
 | ||||
|   svg[class^="slider-"] { | ||||
|     width: 16px  !important; | ||||
|     height: 16px !important; | ||||
|     border-radius: 50%; | ||||
|     margin: 4px 8px; | ||||
|     margin-right: 0; | ||||
|     background-color: white; | ||||
| 
 | ||||
|     > * { | ||||
|       display: none; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div[class^="radioBar-"] { | ||||
|   border: none; | ||||
| } | ||||
| 
 | ||||
| // Round | ||||
| div[class^="tabBarItem-"], | ||||
| div[class^="checkbox"], | ||||
| button[class*="button"], | ||||
| { &:extend(.round); } | ||||
| 
 | ||||
| // Rounder | ||||
| div[class^="markup-"] pre code, // ```code``` | ||||
| span[class^="spoiler"], | ||||
| span.mention, | ||||
| code.inline, | ||||
| [class^="item-"], // in settings | ||||
| div[class^="group-"], // radiogroup | ||||
| div[class*="card"], | ||||
| div[class^="categoryItem-"] > *, // in Discovery | ||||
| div[class^="content-"] img[class^="image-"], | ||||
| { &:extend(.rounder); } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue