Merge branch 'dev' into photon-style-dev

This commit is contained in:
alstjr7375 2022-11-21 09:45:50 +09:00
commit 9c8d59345b
192 changed files with 10856 additions and 7168 deletions

17
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1,17 @@
# These are supported funding model platforms
## Example
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository
# github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
# patreon: # Replace with a single Patreon username
# open_collective: # Replace with a single Open Collective username
# ko_fi: # Replace with a single Ko-fi username
# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
# liberapay: # Replace with a single Liberapay username
# issuehunt: # Replace with a single IssueHunt username
# otechie: # Replace with a single Otechie username
# lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
github: [black7375]

View file

@ -41,21 +41,3 @@ jobs:
- name: Test - name: Test
run: yarn test run: yarn test
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
- name: Prettify code
uses: creyD/prettier_action@v4.1.1
with:
# This part is also where you can pass other options, for example:
prettier_options: --write .
only_changed: True
commit_message: "Clean: Prettified Code!"

View file

@ -55,12 +55,20 @@ jobs:
- name: Release Structure - name: Release Structure
run: | run: |
# Remove unnecessary files
rm -rf ./.git ./.github ./__tests__ ./docs ./src
rm -rf ./.gitattributes ./.gitignore ./.prettierignore ./.prettierrc.json
rm -rf ./package.json ./yarn.lock ./waterfox.sh
rm -rf ./CODE_OF_CONDUCT.md ./CONTRIBUTING.md ./README.org
# Move to ./chrome/
mkdir -v chrome mkdir -v chrome
shopt -s extglob shopt -s extglob
mv -v !(chrome|user.js|install.sh) chrome/ mv -v !(chrome|CREDITS|LICENSE|user.js|install.sh|install.ps1) chrome/
zip -rv ${{ matrix.name }}.zip chrome user.js install.sh # Zip files
zip -rv ${{ matrix.name }}.zip chrome CREDITS LICENSE user.js install.sh install.ps1
- uses: softprops/action-gh-release@v1 # actions/create-release, actions/upload-release-asset is deprecated - uses: softprops/action-gh-release@v1 # actions/create-release, actions/upload-release-asset is deprecated
if: startsWith(github.ref, 'refs/tags/') if: startsWith(github.ref, 'refs/tags/')

130
.gitignore vendored Normal file
View file

@ -0,0 +1,130 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
.env.local
.env.development.local
.env.test.local
.env.production.local
# parcel-bundler cache (https://parceljs.org/)
.cache
# Next.js build output
.next
out
build
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Zero install
# .pnp.* # If not zero install
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# Turborepo
.turbo
# misc
.DS_Store
*.pem

View file

@ -5,7 +5,7 @@
# User.js # User.js
user.js user.js
# Prettier error exeption # Prettier error exception
src/utils/_each.scss src/utils/_each.scss
# [error] src/utils/_each.scss: SyntaxError: CssSyntaxError: At-rule without name (28:7) # [error] src/utils/_each.scss: SyntaxError: CssSyntaxError: At-rule without name (28:7)
# [error] 26 | } # [error] 26 | }

View file

@ -90,7 +90,7 @@ Even if you copy the code snippet, it is recommended that you leave a link.
**FAQ** **FAQ**
If you have any questions about other licenses, please see [Moailla's MPL 2.0 FAQ](https://www.mozilla.org/en-US/MPL/2.0/FAQ/). If you have any questions about other licenses, please see [Mozilla's MPL 2.0 FAQ](https://www.mozilla.org/en-US/MPL/2.0/FAQ/).
## References ## References

30
CREDITS
View file

@ -19,9 +19,23 @@ N: Yunsup Sim
E: pedogunu@gmail.com E: pedogunu@gmail.com
W: https://ethansup.net W: https://ethansup.net
----------
Sponsors
N: Jani Haiko
E: haiko.jani@gmail.com
W: https://github.com/ojaha065
N: nikkehtine
E: nikkehtine@int.pl
W: https://github.com/nikkehtine
---------- ----------
Contributors Contributors
N: 2641a40fd44383320adde4b027a1d0b03bd550
W: https://github.com/2641a40fd44383320adde4b027a1d0b03bd550
N: 7k5x N: 7k5x
E: 7k5xlp0onfire@gmail.com E: 7k5xlp0onfire@gmail.com
W: https://github.com/7k5x W: https://github.com/7k5x
@ -30,6 +44,9 @@ N: Ajith-stark
E: ajith.kum.12342@gmail.com E: ajith.kum.12342@gmail.com
W: https://github.com/Ajith-stark W: https://github.com/Ajith-stark
N: akay
W: https://github.com/akay
N: Andmagdo N: Andmagdo
W: https://github.com/andmagdo W: https://github.com/andmagdo
@ -89,6 +106,9 @@ N: Roel
E: Nyubis@gmail.com E: Nyubis@gmail.com
W: https://github.com/Nyubis W: https://github.com/Nyubis
N: roland-rollo
W: https://github.com/roland-rollo
N: SanderTheDragon N: SanderTheDragon
E: sanderthedragon@zoho.com E: sanderthedragon@zoho.com
W: https://gitlab.com/SanderTheDragon W: https://gitlab.com/SanderTheDragon
@ -126,6 +146,11 @@ W: https://gist.github.com/mmis1000/08d8de4bbe70c04423f0b966bcc286b1
C: Copyright (c) 2021 Mmis1000 <mmis10002@gmail.com> C: Copyright (c) 2021 Mmis1000 <mmis10002@gmail.com>
L: MIT L: MIT
N: edge-frfox
W: https://github.com/bmFtZQ/edge-frfox
C: Copyright (c) 2021 bmFtZQ
L: MIT
N: Feather N: Feather
W: https://github.com/feathericons/feather W: https://github.com/feathericons/feather
C: Copyright (c) 2013-2017 Cole Bemis C: Copyright (c) 2013-2017 Cole Bemis
@ -216,3 +241,8 @@ N: Waterfox
W: https://github.com/WaterfoxCo/Waterfox W: https://github.com/WaterfoxCo/Waterfox
C: Copyright (c) 2012 Waterfox Limited C: Copyright (c) 2012 Waterfox Limited
L: MPL 2.0 L: MPL 2.0
N: WaveFox
W: https://github.com/QNetITQ/WaveFox
C: Copyright (c) 2021 QNetITQ
L: MIT

View file

@ -18,14 +18,14 @@
----- -----
🔔🔔 Did you set a custom, but not work? 🔔🔔 Does the theme not work after installation?
You should copy [[./user.js][ ~user.js~ ]] file before the theme works. You should copy [[./user.js][ ~user.js~ ]] file before the theme works.
The option system depends on user configuration, and nothing applies without settings. \\ The option system depends on user configuration, and nothing applies without settings. \\
Also, real-time changes are difficult for [[./docs/Restrictions.md#supports][technical limitations]] and require restarts. Also, real-time changes are difficult because of [[./docs/Restrictions.md#supports][technical limitations]] and require a restart.
Some settings [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options#using-userjs][can be conflict]] and should be explicitly =false=. Some settings [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options#using-userjs][can be conflicted]] and should be explicitly set to =false=.
----- -----
@ -39,8 +39,8 @@ Some settings [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options#using-u
Lepton's photon styled is preserve Photon's feeling while keep [[https://github.com/black7375/Firefox-UI-Fix][Original Lepton]].'s strengths. Lepton's photon styled is preserve Photon's feeling while keep [[https://github.com/black7375/Firefox-UI-Fix][Original Lepton]].'s strengths.
/Disclaimer:/ It works on *Firefox 89* and above!! /Disclaimer:/ It works on *Firefox 89* and above!!
| *Wiki* | | | | | | *Wiki* | | | | | | |
| [[https://github.com/black7375/Firefox-UI-Fix/wiki/Installation-Guide][Installation Guide]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Screenshots][Screenshots]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options][Options]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Compatibility-Issues-Solution][Compatibility Issues Solution]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Tips][Tips]] | | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Installation-Guide][Installation Guide]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Screenshots][Screenshots]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Tutorial][Tutorial]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options][Options]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Compatibility-Issues-Solution][Compatibility Issues Solution]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Tips][Tips]] | [[https://github.com/black7375/Firefox-UI-Fix/wiki/Show-Off-Your-Config][Show Off Your Config]] |
[[https://user-images.githubusercontent.com/25581533/120091976-41ea4e00-c0ff-11eb-88ca-a204cfcebe72.png]] [[https://user-images.githubusercontent.com/25581533/120091976-41ea4e00-c0ff-11eb-88ca-a204cfcebe72.png]]
@ -52,9 +52,7 @@ Some settings [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options#using-u
- Default light/dark theme contrast enhancement - Default light/dark theme contrast enhancement
- Colorful context menu - Colorful context menu
- More dark mode support - More dark mode support
- GTK system theme support - Windows/Mac/Linux system theme support
- Windows system theme support
- Mac system theme support
- Windows 7 compatibility - Windows 7 compatibility
- *Icons* - *Icons*
- Panel: like Photon - Panel: like Photon
@ -68,13 +66,13 @@ Some settings [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options#using-u
- Menu - Menu
- Density - Density
- Others... - Others...
- *Tabbar Layouts* - *Tab Bar Layouts*
- Tabs on Bottom - Tabs on Bottom
- One Liner - One Liner
- Vertical Tab Support - Vertical Tab Support
- *Tab Design* - *Tab Design*
- General: - General:
- Connect with toolbar(Buttons like tabs): like Photon - Connect with toolbar (buttons like tabs): like Photon
- Selected: - Selected:
- Context Line: like Photon - Context Line: like Photon
- Bottom Rounding: Natural - Bottom Rounding: Natural
@ -118,9 +116,9 @@ Some settings [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options#using-u
** Installation Guide ** Installation Guide
*Script Installation (experimental)* *Installation script (experimental)*
Linux, mac users: Linux/Mac users:
#+BEGIN_SRC bash #+BEGIN_SRC bash
bash -c "$(curl -fsSL https://raw.githubusercontent.com/black7375/Firefox-UI-Fix/master/install.sh)" bash -c "$(curl -fsSL https://raw.githubusercontent.com/black7375/Firefox-UI-Fix/master/install.sh)"
#+END_SRC #+END_SRC
@ -135,8 +133,8 @@ Windows users: Run with powershell ([[https://github.com/black7375/Firefox-UI-Fi
You can see the [[https://github.com/black7375/Firefox-UI-Fix/wiki/Installation-Guide][installation guide]] with screenshots on the wiki. You can see the [[https://github.com/black7375/Firefox-UI-Fix/wiki/Installation-Guide][installation guide]] with screenshots on the wiki.
1. Download files 1. Download files
- Click the green ":arrow_down: Code"-button above - Click the green ":arrow_down: Code" button above
- Select ":package: Download Zip" - Select ":package: Download ZIP"
2. Find your profile directory 2. Find your profile directory
- Open =about:support= in a new tab - Open =about:support= in a new tab
- Find the =Profile Folder= entry and click the =Open Folder= button - Find the =Profile Folder= entry and click the =Open Folder= button

34
__tests__/_has.test.scss Normal file
View file

@ -0,0 +1,34 @@
@use "true" as *;
@use "example" as *;
@use "../src/utils/has" as *;
@include test-module("`:has()` selector test [mix]") {
@include test("exist `:has()`") {
@include assert {
@include output {
@include Has {
@include example;
}
}
@include expect {
@supports selector(:has(a)) {
@include example;
}
}
}
}
@include test("don't exist `:has()`") {
@include assert {
@include output {
@include NotHas {
@include example;
}
}
@include expect {
@supports not selector(:has(a)) {
@include example;
}
}
}
}
}

View file

@ -59,4 +59,28 @@
} }
} }
} }
@include test("Highlight") {
@include assert {
@include output {
@include AccentColor("Highlight") {
body {
background-color: $accentColor;
color: $accentTextColor;
}
}
}
@include expect {
body {
background-color: AccentColor;
color: AccentColorText;
}
@supports -moz-bool-pref("userChrome.compatibility.accent_color") {
body {
background-color: Highlight;
color: HighlightText;
}
}
}
}
}
} }

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "example" as *; @use "example" as *;
@use "../src/utils/color_scheme"; @use "../src/utils/color_scheme";

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "example" as *; @use "example" as *;
@use "../src/utils/each"; @use "../src/utils/each";
@ -68,7 +68,7 @@
@include test("prefix custom option") { @include test("prefix custom option") {
@include assert { @include assert {
@include output { @include output {
@include each.AtEach("supports", "userChrome.tab.photon", "-moz-bool-pref", ("seperator": " or ", "quoted": true)) { @include each.AtEach("supports", "userChrome.tab.photon", "-moz-bool-pref", ("separator": " or ", "quoted": true)) {
@include example; @include example;
} }
} }
@ -84,7 +84,7 @@
@include assert { @include assert {
@include output { @include output {
$input: "userChrome.tab.photon" "userChrome.padding.photon"; $input: "userChrome.tab.photon" "userChrome.padding.photon";
@include each.AtEach("supports", $input, "-moz-bool-pref", ("seperator": " or ", "quoted": true)) { @include each.AtEach("supports", $input, "-moz-bool-pref", ("separator": " or ", "quoted": true)) {
@include example; @include example;
} }
} }

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "../src/utils/list"; @use "../src/utils/list";
// TODO: Need more tests.. // TODO: Need more tests..

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "example" as *; @use "example" as *;
@use "../src/utils/media"; @use "../src/utils/media";

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "example" as *; @use "example" as *;
@use "../src/utils/native_menu"; @use "../src/utils/native_menu";

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "example" as *; @use "example" as *;
@use "../src/utils/one_liner"; @use "../src/utils/one_liner";

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "example" as *; @use "example" as *;
@use "../src/utils/option"; @use "../src/utils/option";

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "example" as *; @use "example" as *;
@use "../src/utils/os" as *; @use "../src/utils/os" as *;

View file

@ -1,4 +1,4 @@
@use 'true' as *; @use "true" as *;
@use "example" as *; @use "example" as *;
@use "sass:selector"; @use "sass:selector";
@use "../src/utils/theme"; @use "../src/utils/theme";

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -15,14 +15,14 @@
- [UDN: omni.ja (formerly omni.jar)](https://udn.realityripple.com/docs/Mozilla/About_omni.ja_(formerly_omni.jar)) - [UDN: omni.ja (formerly omni.jar)](https://udn.realityripple.com/docs/Mozilla/About_omni.ja_(formerly_omni.jar))
- [Firefox 4: jar jar jar](https://web.archive.org/web/20161003115800/https://blog.mozilla.org/tglek/2010/09/14/firefox-4-jar-jar-jar/) - [Firefox 4: jar jar jar](https://web.archive.org/web/20161003115800/https://blog.mozilla.org/tglek/2010/09/14/firefox-4-jar-jar-jar/)
- [Firefox's Optimized Zip Format: Reading Zip Files Really Quickly](https://taras.glek.net/post/optimized-zip-format/) - [Firefox's Optimized Zip Format: Reading Zip Files Really Quickly](https://taras.glek.net/post/optimized-zip-format/)
- [How to Optimize or Deoptimize Firefox OMNI.JA File](https://www.raymond.cc/blog/edit-files-inside-firefox-4-omni-jar-to-auto-save-password/) - [How to Optimize or De-optimize Firefox OMNI.JA File](https://www.raymond.cc/blog/edit-files-inside-firefox-4-omni-jar-to-auto-save-password/)
**Explanation** **Explanation**
Firefox achieve performance improvements by moving many of their internal parts from being standalone files or sets of JAR files into just one JAR file called `omni.ja`. Firefox achieves performance improvements by moving many of their internal parts from being standalone files or sets of JAR files into just one JAR file called `omni.ja`.
This reduces the amount of I/O needed to load the application. This reduces the amount of I/O needed to load the application.
Chrome content, modules, non-binary components, and many other elements are packaged in an omni.jar file for each base directory. Chrome content, modules, non-binary components, and many other elements are packaged in an omni.ja file for each base directory.
- `actors/`: [JSActors](https://firefox-source-docs.mozilla.org/dom/ipc/jsactors.html) related files. - `actors/`: [JSActors](https://firefox-source-docs.mozilla.org/dom/ipc/jsactors.html) related files.
- `chrome.manifest`: The [chrome manifest](https://udn.realityripple.com/docs/Mozilla/Chrome_Registration) file. - `chrome.manifest`: The [chrome manifest](https://udn.realityripple.com/docs/Mozilla/Chrome_Registration) file.

View file

@ -27,7 +27,7 @@
- Convention is to use a dotted segmented form (Ex. `browser.cache.disk.enable`) - Convention is to use a dotted segmented form (Ex. `browser.cache.disk.enable`)
- Value: - Value:
- Type: bool, 32-bit ints, 8-bit C string - Type: bool, 32-bit ints, 8-bit C string
- When you need an float, use a string. (Ex. `general.smoothScroll.currentVelocityWeighting`: `"0.25"`) - When you need a float, use a string (Ex. `general.smoothScroll.currentVelocityWeighting`: `"0.25"`)
**Main Purpose** **Main Purpose**
- Feature enable/disable flags (Ex. `xpinstall.signatures.required`). - Feature enable/disable flags (Ex. `xpinstall.signatures.required`).
@ -73,7 +73,7 @@ See [EBNF(Extended Backus-Naur form)](https://en.wikipedia.org/wiki/Extended_Bac
## Default Config ## Default Config
- [`modules/libpref/init/all.js`](https://github.com/mozilla/gecko-dev/blob/master/modules/libpref/init/all.js): all products - [`modules/libpref/init/all.js`](https://github.com/mozilla/gecko-dev/blob/master/modules/libpref/init/all.js): all products
- [`browser/app/profile/firefox.js`](https://github.com/mozilla/gecko-dev/blob/master/browser/app/profile/firefox.js): only firefox deskstop - [`browser/app/profile/firefox.js`](https://github.com/mozilla/gecko-dev/blob/master/browser/app/profile/firefox.js): only firefox desktop
In release builds these are all put into [`omni.ja`](./Omni_ja.md). In release builds these are all put into [`omni.ja`](./Omni_ja.md).
@ -107,7 +107,7 @@ It is written to `prefs.js` in a way that can be set by the GUI.
**Basics** **Basics**
It exists in the profile directory, and is used to store settings that are changed from *defaults* or when users added *new settings*. It exists in the profile directory, and is used to store settings that are changed from *defaults* or when users added *new settings*.
In general, Do NOT edit `prefs.js` directly. In general, do NOT edit `prefs.js` directly.
### user.js ### user.js
**Related Docs** **Related Docs**
@ -141,6 +141,9 @@ user_pref("general.smoothScroll.currentVelocityWeighting", "0.12"); // String
**Basics** **Basics**
Customizations that cannot be done with add-on and [`User Custom CSS`](./README.md#user-custom-css), such as adding browser UI elements directly or changing default behavior, must use `Auto Config`. Customizations that cannot be done with add-on and [`User Custom CSS`](./README.md#user-custom-css), such as adding browser UI elements directly or changing default behavior, must use `Auto Config`.
`.mjs`(ES6 Module) is also used in FF `v102` or above.
- [Bug 1432901 - Prototype loading ES6 Module as JSM](https://bugzilla.mozilla.org/show_bug.cgi?id=1432901)
**How to** **How to**
```javascript ```javascript
pref("general.config.filename", "config.js"); // alternative to "firefox.cfg", for using highlight pref("general.config.filename", "config.js"); // alternative to "firefox.cfg", for using highlight

View file

@ -23,12 +23,12 @@ root
|- src/: Source files |- src/: Source files
|- src/leptonChrome.scss: Entry of SCSS for Browser UI |- src/leptonChrome.scss: Entry of SCSS for Browser UI
|- src/leptonContent.scss: Entry of SCSS for Web pages |- src/leptonContent.scss: Entry of SCSS for Web pages
|- .gitattributes: Exclude at `Download Zip` |- .gitattributes: Exclude at `Download ZIP`
|- .github: Issue/PR Template, Github Actions |- .github: Issue/PR Template, Github Actions
|- .prettierignore: Exclude coding style |- .prettierignore: Exclude coding style
|- .prettierrc.json: Coding style |- .prettierrc.json: Coding style
|- install.ps1: Install script write in powersehll |- install.ps1: Install script written in powershell
|- install.sh: Install script write in bash |- install.sh: Install script written in bash
|- package.json: Build setup, package dependency |- package.json: Build setup, package dependency
|- LEPTON: Meta infos (branch, version) |- LEPTON: Meta infos (branch, version)
|- user.js: about:config settings |- user.js: about:config settings
@ -47,7 +47,7 @@ Icons are mainly [FirefoxUX/photon-icons](https://github.com/FirefoxUX/photon-ic
or [microsoft/fluentui-system-icons](https://github.com/microsoft/fluentui-system-icons). or [microsoft/fluentui-system-icons](https://github.com/microsoft/fluentui-system-icons).
Although not yet used, [tabler/tabler-icons](https://github.com/tabler/tabler-icons) and [feathericons/feather](https://github.com/feathericons/feather) can also be referred to. Although not yet used, [tabler/tabler-icons](https://github.com/tabler/tabler-icons) and [feathericons/feather](https://github.com/feathericons/feather) can also be referred to.
You can see more in the issue, [Unify icon design langauge #213](https://github.com/black7375/Firefox-UI-Fix/issues/213). You can see more in the issue, [Unify icon design language #213](https://github.com/black7375/Firefox-UI-Fix/issues/213).
## Install Scripts ## Install Scripts
### Meta Info files ### Meta Info files

View file

@ -1,4 +1,4 @@
# Develper Documents for Firefox Custom # Developer Documents for Firefox Custom
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc --> <!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->
**Table of Contents** **Table of Contents**
@ -31,15 +31,15 @@ Firefox Source Code:
- [Firefox Source Docs](https://firefox-source-docs.mozilla.org/) - [Firefox Source Docs](https://firefox-source-docs.mozilla.org/)
Firefox Documents: Firefox Documents:
- [Support Mozilla: Firefox advanced customization and configuration options](https://support.mozilla.org/en-US/kb/firefox-advanced-customization-and-configuration) - [Mozilla Support: Firefox advanced customization and configuration options](https://support.mozilla.org/en-US/kb/firefox-advanced-customization-and-configuration)
- [Support Mozilla: Profiles - Where Firefox stores your bookmarks, passwords and other user data](https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data) - [Mozilla Support: Profiles - Where Firefox stores your bookmarks, passwords and other user data](https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data)
Test for None mac users: Test for non-Mac users:
- [Docker-OSX](https://github.com/sickcodes/Docker-OSX) - [Docker-OSX](https://github.com/sickcodes/Docker-OSX)
## Project-Specific ## Project-Specific
### Environment ### Environment
[`git`](https://git-scm.com/) and [`yarn`](https://yarnpkg.com/) should be installed. [`git`](https://git-scm.com/) and [`yarn`](https://yarnpkg.com/) must be installed.
You can configure it as follows: You can configure it as follows:
```shell ```shell
@ -62,7 +62,7 @@ yarn build
You can check test and css validate: You can check test and css validate:
```shell ```shell
## test - When you make mixin or function ## test - When you make mixin or function
# __tests__ direcory, You can also find out how to use internal utils. # __tests__ directory, You can also find out how to use internal utils.
yarn test yarn test
## validate - Will be failed, this project uses non-standard features. ## validate - Will be failed, this project uses non-standard features.
@ -93,7 +93,7 @@ This is a rough guideline. (Not forced)
### Basics ### Basics
`userChrome.css` file is for browser UI, `userContent.css` file is for web contents. `userChrome.css` file is for browser UI, `userContent.css` file is for web contents.
Unlike [User config](./Preference.md#user-config), they are located in `<FIREFPX_PROFILE>/chrome/`. Unlike [User config](./Preference.md#user-config), they are located in `<FIREFOX_PROFILE>/chrome/`.
Start Guide: Start Guide:
- [What is userChrome.css? What can it do?](https://www.userchrome.org/what-is-userchrome-css.html) - [What is userChrome.css? What can it do?](https://www.userchrome.org/what-is-userchrome-css.html)

View file

@ -6,7 +6,10 @@
* [Cross Platform](#cross-platform) * [Cross Platform](#cross-platform)
* [Firefox Version](#firefox-version) * [Firefox Version](#firefox-version)
* [Side Effect](#side-effect) * [Side Effect](#side-effect)
* [`-moz-accent-color` Related](#-moz-accent-color-related) * [RTL](#rtl)
* [`-moz-accent-color`](#-moz-accent-color)
* [Fork Browsers](#fork-browsers)
* [Add-ons](#add-ons)
- [Internals](#internals) - [Internals](#internals)
* [CSS Loading Order](#css-loading-order) * [CSS Loading Order](#css-loading-order)
* [DOM structure cannot be modified](#dom-structure-cannot-be-modified) * [DOM structure cannot be modified](#dom-structure-cannot-be-modified)
@ -59,12 +62,9 @@ This project is using SCSS to make a [reusable compatible mixins](../src/utils).
- `-moz-os-version` -> `-moz-platform` [#331](https://github.com/black7375/Firefox-UI-Fix/issues/331) - `-moz-os-version` -> `-moz-platform` [#331](https://github.com/black7375/Firefox-UI-Fix/issues/331)
- Breaking change with `-moz-accent-color`/`-moz-accent-color-foreground` -> `AccentColor`/`AccentColorText` [#433](https://github.com/black7375/Firefox-UI-Fix/issues/433) - Breaking change with `-moz-accent-color`/`-moz-accent-color-foreground` -> `AccentColor`/`AccentColorText` [#433](https://github.com/black7375/Firefox-UI-Fix/issues/433)
### `-moz-accent-color`
I don't know the exact reason, but it can be a problem if it is not applied to [CSS Variable](https://developer.mozilla.org/en-US/docs/Web/CSS/var). [#437](https://github.com/black7375/Firefox-UI-Fix/issues/437)
### Side Effect ### Side Effect
Only CSS modifications can cause bugs that are hard to think of in the general web, such as the [context menu not appearing](https://github.com/black7375/Firefox-UI-Fix/issues/114). Only CSS modifications can cause bugs that are hard to think of in the general web, such as the [context menu not appearing](https://github.com/black7375/Firefox-UI-Fix/issues/114).
Sometimes there are times when there is a really hard to understand. [#503](https://github.com/black7375/Firefox-UI-Fix/issues/503#issuecomment-1312685684)
Especially be careful when customizing XUL elements. Especially be careful when customizing XUL elements.
The following code will cause extension panels fail to open and trying to open them might even crash Firefox. ([@MrOtherGuy](https://www.reddit.com/r/FirefoxCSS/comments/u1mdld/comment/i4eg29n/?utm_source=share&utm_medium=web2x&context=3) reports) The following code will cause extension panels fail to open and trying to open them might even crash Firefox. ([@MrOtherGuy](https://www.reddit.com/r/FirefoxCSS/comments/u1mdld/comment/i4eg29n/?utm_source=share&utm_medium=web2x&context=3) reports)
@ -77,11 +77,56 @@ Info: `#nav-bar` is [`toolbar`](https://udn.realityripple.com/docs/Archive/Mozil
Another `display: flex`'s side effect examples. [#368](https://github.com/black7375/Firefox-UI-Fix/issues/368) [#372](https://github.com/black7375/Firefox-UI-Fix/issues/372) Another `display: flex`'s side effect examples. [#368](https://github.com/black7375/Firefox-UI-Fix/issues/368) [#372](https://github.com/black7375/Firefox-UI-Fix/issues/372)
### RTL
It can be detected using [`:-moz-locale-dir(rtl)`](https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-locale-dir(rtl)) on the interface(chrome) and [`:dir(rtl)`](https://developer.mozilla.org/en-US/docs/Web/CSS/:dir) on the content.
[`margin-inline`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-inline) and [`padding-inline`](https://developer.mozilla.org/en-US/docs/Web/CSS/padding-inline) works as desired, but [`background-position-x`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-position-x) and [`translateX()`](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translateX) should use the opposite values.
### `-moz-accent-color`
I don't know the exact reason, but it can be a problem if it is not applied to [CSS Variable](https://developer.mozilla.org/en-US/docs/Web/CSS/var). [#437](https://github.com/black7375/Firefox-UI-Fix/issues/437)
### Fork Browsers
Fork browsers have a different installation location ([bash](https://github.com/black7375/Firefox-UI-Fix/blob/2e87567b662922810d53959e46084b78f330f54e/install.sh#L336-L353), [powershell](https://github.com/black7375/Firefox-UI-Fix/blob/2e87567b662922810d53959e46084b78f330f54e/install.ps1#L387-L395)), and there may be a menu that Firefox does not have.
List of fork browsers supported by this project:
- [Waterfox](https://www.waterfox.net/)
- [LibreWolf](https://librewolf.net/)
- [Tor Browser](https://www.torproject.org/download/)
- [Pulse Browser](https://pulsebrowser.app/)
- [Firedragon](https://dr460nf1r3.org/projects/firedragon/)
- [Ghostery Broser](https://www.ghostery.com/dawn)
### Add-ons
**Web extentions**
You can apply [Web extentions](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions)'s context menu icons.
At this time, we recommend that the [explicit ID](https://extensionworkshop.com/documentation/develop/extensions-and-the-add-on-id/) is set.
If not, an anonymous ID is created in the local, so you need a [UUID replacer](https://github.com/overdodactyl/ShadowFox/blob/master/scripts/uuids.sh).
List of web extentions supported by this project:
- [Tree Style Tab](https://addons.mozilla.org/en-US/firefox/addon/tree-style-tab/)
- [Tab Center Reborn](https://addons.mozilla.org/en-US/firefox/addon/tabcenter-reborn/)
- [Sidebar Tabs](https://addons.mozilla.org/en-US/firefox/addon/sidebartabs/)
**Legacy Addons**
We should consider [Legacy addons](https://extensionworkshop.com/documentation/develop/porting-a-legacy-firefox-extension/), not web extentions.
Legacy addons can be loaded by [Auto config's feature](./Preference.md#auto-config) or [bootstrapLoder](https://github.com/xiaoxiaoflood/firefox-scripts/tree/master/extensions/bootstrapLoader) and can directly manipulate the DOM structure and style. [onemen/TabMixPlus#168](https://github.com/onemen/TabMixPlus/issues/168)
List of legacy addons supported by this project:
- [Tab Mix Plus](https://github.com/onemen/TabMixPlus)
## Internals ## Internals
### CSS Loading Order ### CSS Loading Order
User CSS (`userChrome.css`, `userContent.css`) is usually loaded first. User CSS (`userChrome.css`, `userContent.css`) is usually loaded first.
In many cases, overriding should be prevented with [`important!`](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity#the_!important_exception)(Anti-pattern in general web), and side effects should also be considered. [#11](https://github.com/black7375/Firefox-UI-Fix/issues/11) In many cases, overriding should be prevented with [`!important`](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity#the_!important_exception) (Anti-pattern in general web), and side effects should also be considered. [#11](https://github.com/black7375/Firefox-UI-Fix/issues/11)
### DOM structure cannot be modified ### DOM structure cannot be modified
It is possible with [JS (Auto config)](./Preference.md#auto-config), but there are security and configuration issues, so we should make the most of CSS. It is possible with [JS (Auto config)](./Preference.md#auto-config), but there are security and configuration issues, so we should make the most of CSS.
@ -93,7 +138,7 @@ Many implementations using `::before`, `::after`.
- [Dynamic Tab Separator](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L3394-L3457) - [Dynamic Tab Separator](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L3394-L3457)
- [Static Tab Separator](https://github.com/black7375/Firefox-UI-Fix/blob/0f78a73b856e1335954ecded93d377b85134bd61/userChrome.css#L3387-L3428) - [Static Tab Separator](https://github.com/black7375/Firefox-UI-Fix/blob/0f78a73b856e1335954ecded93d377b85134bd61/userChrome.css#L3387-L3428)
- [Picture In Picture Indicator](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L3716-L3753) - [Picture In Picture Indicator](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L3716-L3753)
- [Contaner Indicator](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L3754-L3852) - [Container Indicator](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L3754-L3852)
For icons, [`list-style-image`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-image) and [`background-image`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-image) are available. For icons, [`list-style-image`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-image) and [`background-image`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-image) are available.
@ -116,42 +161,42 @@ By default, [attribute selectors](https://developer.mozilla.org/en-US/docs/Web/C
If there is no state attributes, you can bypass by using [both transitions and keyframes](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L2704-L2730) for animation. If there is no state attributes, you can bypass by using [both transitions and keyframes](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L2704-L2730) for animation.
### Shadow DOM ### Shadow DOM
Firefox actively uses [shadow dom](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) internally. Firefox actively uses [shadow DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) internally.
To modify, it is often a roundabout approach or impossible to inherit. To modify, it is often a roundabout approach or impossible to inherit.
Onething bypass method is to declare [`var()`](https://developer.mozilla.org/en-US/docs/Web/CSS/var) to shadow root. One bypass method is to declare [`var()`](https://developer.mozilla.org/en-US/docs/Web/CSS/var) to shadow root.
- [Scrollbutton Padding](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L2906-L2924) - [Scrollbutton Padding](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userChrome.css#L2906-L2924)
- [Audio, Video Player UI](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userContent.css#L5-L47) - [Audio, Video Player UI](https://github.com/black7375/Firefox-UI-Fix/blob/36e9c94844fee2417662251cbd50c2b874d5b576/userContent.css#L5-L47)
- [Video Player Twoline UI](https://github.com/black7375/Firefox-UI-Fix/blob/cbf14cd55a9edada7ab2f5f1b626608fb9fe38a2/src/contents/_video_player.scss#L68-L171): It is pretty difficult when the condition becomes complicated. - [Video Player Twoline UI](https://github.com/black7375/Firefox-UI-Fix/blob/cbf14cd55a9edada7ab2f5f1b626608fb9fe38a2/src/contents/_video_player.scss#L68-L171): It is pretty difficult when the condition becomes complicated.
Another limitation of shadow dom in user style is that you cannot use shadow dom related selectors like [`:host`](https://developer.mozilla.org/en-US/docs/Web/CSS/:host_function) and [`::part`](https://developer.mozilla.org/en-US/docs/Web/CSS/::part). Another limitation of shadow DOM in user style is that you cannot use shadow DOM related selectors like [`:host`](https://developer.mozilla.org/en-US/docs/Web/CSS/:host_function) and [`::part`](https://developer.mozilla.org/en-US/docs/Web/CSS/::part).
- [Using ::part() selector in userchrome.css?](https://www.reddit.com/r/FirefoxCSS/comments/d2sukj/using_part_selector_in_userchromecss/) - [Using ::part() selector in userchrome.css?](https://www.reddit.com/r/FirefoxCSS/comments/d2sukj/using_part_selector_in_userchromecss/)
- [Can't change some shadow-dom properties](https://www.reddit.com/r/FirefoxCSS/comments/rebn3s/cant_change_some_shadowdom_properties/) - [Can't change some shadow-dom properties](https://www.reddit.com/r/FirefoxCSS/comments/rebn3s/cant_change_some_shadowdom_properties/)
- [Bug 1575507 - Shadow parts should work in user-origin stylesheets.](https://bugzilla.mozilla.org/show_bug.cgi?id=1575507) - [Bug 1575507 - Shadow parts should work in user-origin stylesheets.](https://bugzilla.mozilla.org/show_bug.cgi?id=1575507)
### XUL ### XUL
Sometimes firefox can use [XUL](https://en.wikipedia.org/wiki/XUL) that have been written and binded with C++ for performance like a treeview of bookmarks. Sometimes firefox can use [XUL](https://en.wikipedia.org/wiki/XUL) that have been written and bound with C++ for performance like a treeview of bookmarks.
XUL's [box model](https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Tutorial/The_Box_Model) and [DOM](https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Tutorial/Document_Object_Model) are different from HTML. XUL's [box model](https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Tutorial/The_Box_Model) and [DOM](https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Tutorial/Document_Object_Model) are different from HTML.
There ar few appropriate documents, so we have to read the source code and work. (Ex. [1](https://github.com/mozilla/gecko-dev/blob/master/layout/style/nsCSSAnonBoxList.h), [2](https://github.com/mozilla/gecko-dev/blob/master/layout/xul/tree/nsITreeView.idl)) There are a few appropriate documents, so we have to read the source code and work. (Ex. [1](https://github.com/mozilla/gecko-dev/blob/master/layout/style/nsCSSAnonBoxList.h), [2](https://github.com/mozilla/gecko-dev/blob/master/layout/xul/tree/nsITreeView.idl))
Available CSS features are also restricted. Available CSS features are also restricted.
Example of legacy documents that will help. Examples of legacy documents that will help:
- [UDN: ::-moz-tree-cell](https://udn.realityripple.com/docs/Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell) - [UDN: ::-moz-tree-cell](https://udn.realityripple.com/docs/Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell)
- [UDN: ::-moz-tree-cell-text](https://udn.realityripple.com/docs/Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text) - [UDN: ::-moz-tree-cell-text](https://udn.realityripple.com/docs/Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text)
Another case. Another case.
Like [`<toolbar align="end"></toolbar>`](https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Attribute/align), [`attributes`](https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Attribute) is set and CSS of same property may not be appplied. (Ex. [`box-align: start`](https://udn.realityripple.com/docs/Web/CSS/box-align)) Like [`<toolbar align="end"></toolbar>`](https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Attribute/align), [`attributes`](https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Attribute) is set and CSS of same property may not be applied. (Ex. [`box-align: start`](https://udn.realityripple.com/docs/Web/CSS/box-align))
### Supports ### Supports
[`@supports`](https://developer.mozilla.org/en-US/docs/Web/CSS/@supports) change in CSS is not detected in real time. (Caching after checking only once) [`@supports`](https://developer.mozilla.org/en-US/docs/Web/CSS/@supports) change in CSS is not detected in real time. (Caching after checking only once)
So a restart is required, and if the mozilla need real time changes, are using `@media` to handle it. So a restart is required, and if Mozilla needs real time changes, they are using `@media` to handle it.
If project only use pure CSS, we cannot add `@media rules`. If project only uses pure CSS, we cannot add `@media rules`.
- [Bug 1267890 - Support detecting bool preferences in chrome stylesheets](https://bugzilla.mozilla.org/show_bug.cgi?id=1267890) - [Bug 1267890 - Support detecting bool preferences in chrome stylesheets](https://bugzilla.mozilla.org/show_bug.cgi?id=1267890)
- [Bug 1698132 - Improve caching behaviour of -moz-bool-pref](https://bugzilla.mozilla.org/show_bug.cgi?id=1698132) - [Bug 1698132 - Improve caching behaviour of -moz-bool-pref](https://bugzilla.mozilla.org/show_bug.cgi?id=1698132)

View file

@ -46,7 +46,7 @@ It comes from [#109](https://github.com/black7375/Firefox-UI-Fix/issues/109#issu
Stable: Only bugfix, Documentation. Stable: Only bugfix, Documentation.
- `master`: Common bugfix, documentation. - `master`: Common bugfix, documentation.
- `photon-style`: Bugfix, documentation specified in `photon-style`. - `photon-style`: Bugfix, documentation specified in `photon-style`.
- `proton-sryle`: Bugfix, documentation specified in `proton-style`. - `proton-style`: Bugfix, documentation specified in `proton-style`.
Development: New Features. Development: New Features.
- `dev`: Common new features. - `dev`: Common new features.

View file

@ -12,7 +12,7 @@
## Basics ## Basics
**Related Docs** **Related Docs**
- [Support Mozilla: Restore the default Smart Bookmarks Folders](https://support.mozilla.org/en-US/kb/restore-default-smart-bookmarks-folders) (Not works) - [Mozilla Support: Restore the default Smart Bookmarks Folders](https://support.mozilla.org/en-US/kb/restore-default-smart-bookmarks-folders) (does not work)
- [Smart Bookmarks. A quick guide.](https://www.reddit.com/r/firefox/comments/2i4qcy/smart_bookmarks_a_quick_guide/) - [Smart Bookmarks. A quick guide.](https://www.reddit.com/r/firefox/comments/2i4qcy/smart_bookmarks_a_quick_guide/)
- [Smart Bookmarks. A quick guide. (extended)](https://www.reddit.com/r/firefox/comments/fvcw96/query_bookmarks_smart_bookmarks_a_quick_guide/) - [Smart Bookmarks. A quick guide. (extended)](https://www.reddit.com/r/firefox/comments/fvcw96/query_bookmarks_smart_bookmarks_a_quick_guide/)
- [How to Create Custom Smart Bookmarks Folders in Firefox](https://www.howtogeek.com/111820/how-to-create-custom-smart-bookmarks-folders-in-firefox/) - [How to Create Custom Smart Bookmarks Folders in Firefox](https://www.howtogeek.com/111820/how-to-create-custom-smart-bookmarks-folders-in-firefox/)

View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M9.037 0c-.599 0-1.13.358-1.351.914l-.395.994a1.457 1.457 0 0 1 1.156.117l.276-.697a.326.326 0 0 1 .314-.213.328.328 0 0 1 .313.213l1.28 3.215.483.352 3.453.222a.328.328 0 0 1 .301.235.325.325 0 0 1-.105.365l-.576.476a1.446 1.446 0 0 1 .441.653 1.446 1.446 0 0 1 .07.373l.776-.645a1.446 1.446 0 0 0 .455-1.568 1.446 1.446 0 0 0-1.29-1l-3.1-.201-1.151-2.89A1.445 1.445 0 0 0 9.037 0zM6.963 2.613c-.599 0-1.13.36-1.352.916L4.463 6.418l-3.102.201a1.447 1.447 0 0 0-1.289 1 1.444 1.444 0 0 0 .453 1.567l2.393 1.986-.768 3.012a1.446 1.446 0 0 0 .555 1.535c.255.186.554.279.854.279a1.455 1.455 0 0 0 .777-.225l2.627-1.662 2.627 1.662a1.444 1.444 0 0 0 1.63-.052 1.446 1.446 0 0 0 .555-1.535l-.767-3.012 2.39-1.986a1.446 1.446 0 0 0 .456-1.569 1.446 1.446 0 0 0-1.29-1l-3.101-.201-1.149-2.889a1.45 1.45 0 0 0-1.351-.916zm0 1.116a.328.328 0 0 1 .314.212L8.56 7.156l.482.352 3.453.222a.328.328 0 0 1 .299.235.325.325 0 0 1-.105.363l-2.665 2.211-.183.566.855 3.356a.328.328 0 0 1-.127.355.326.326 0 0 1-.38.014l-2.926-1.85h-.596L3.74 14.83a.324.324 0 0 1-.38-.014.325.325 0 0 1-.13-.355l.856-3.354-.184-.566-2.664-2.213a.325.325 0 0 1-.105-.363.327.327 0 0 1 .299-.233l3.455-.224.482-.35 1.28-3.217a.326.326 0 0 1 .314-.212z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

4
icons/edit-paste-go.svg Normal file
View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M7.432 0a2.5 2.5 0 0 0-2.38 2H3.999a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h3.9l3.33-3.172H5.437c-1.44-.002-1.766-2.065-.98-3.004A.995.995 0 0 1 4 9V5h5.537c.621-.353 1.442-.377 2.133.26L13 6.527V4a2 2 0 0 0-2-2H9.95a2.5 2.5 0 0 0-2.518-2zm.125 1a1.5 1.5 0 0 1 1.412 1.2 1 1 0 0 0 .98.8H11v1H4V3h1.05a1 1 0 0 0 .98-.8A1.5 1.5 0 0 1 7.556 1zM7.5 2c-.785 0 .5 1.285.5.5a.5.5 0 0 0-.5-.5zm-2 4c-.667 0-.667 1 0 1h3.18a1.488 1.488 0 0 1 0-1H5.5zm0 2c-.667 0-.667 1 0 1h2c.667 0 .667-1 0-1h-2z"/>
<path d="m15.798 10.678-4.136-4.137a.69.69 0 0 0-.975.975l2.96 2.96H5.658a.69.69 0 0 0 0 1.379h7.987l-2.96 2.96a.69.69 0 1 0 .976.975l4.136-4.137a.69.69 0 0 0 0-.975z"/>
</svg>

After

Width:  |  Height:  |  Size: 813 B

View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M7.455-.002a2.5 2.5 0 0 0-.266.02A2.5 2.5 0 0 0 5.051 2H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h7a2 2 0 0 0 1.844-1.236l-1.623-1.616a5.17 5.17 0 0 1-2.666.752 5.17 5.17 0 0 1-5.17-5.17A5.17 5.17 0 0 1 4 6.31V5h.992a5.17 5.17 0 0 1 1.485-1H4V3h1.05a1 1 0 0 0 .98-.8 1.5 1.5 0 0 1 2.939 0 1 1 0 0 0 .98.8H11v1h-.36A5.17 5.17 0 0 1 13 6.09V4a2 2 0 0 0-2-2H9.95A2.5 2.5 0 0 0 7.454-.002zM7.5 2a.5.5 0 1 0 .5.5.5.5 0 0 0-.5-.5z"/>
<path d="m15.68 14.706-3.539-3.538a4.417 4.417 0 1 0-1.037 1.037l3.538 3.539a.734.734 0 0 0 1.038-1.038zm-7.123-3.15a2.935 2.935 0 1 1 2.935-2.935 2.935 2.935 0 0 1-2.935 2.935Z" style="stroke-width:.733799"/>
</svg>

After

Width:  |  Height:  |  Size: 789 B

View file

@ -0,0 +1,61 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300" viewBox="0 0 300 300">
<defs>
<linearGradient id="a" x1="-300.021" y1="-272.736" x2="547.138" y2="574.423" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ccfbff"/>
<stop offset="1" stop-color="#c9e4ff"/>
</linearGradient>
<linearGradient id="b" x1="-18.672" y1="23.78" x2="279.805" y2="322.256" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#00c8d7"/>
<stop offset="1" stop-color="#0a84ff"/>
</linearGradient>
</defs>
<path d="M73.275 165.84l63.117-26.74a1 1 0 0 0-.78-1.842L72.494 164a1 1 0 0 0 .78 1.842z" fill="#eaeaee"/>
<path d="M110.05 144.74l15.834-6.708a.5.5 0 1 0-.39-.921l-15.834 6.708a.5.5 0 0 0 .39.921z" fill="#eaeaee"/>
<path d="M59.35 176.038a.5.5 0 0 1 .265-.655l2.762-1.17a.5.5 0 1 1 .39.921l-2.762 1.17a.5.5 0 0 1-.655-.266zm10.128-4.291a.5.5 0 0 1 .265-.655l11.049-4.681a.5.5 0 1 1 .39.921l-11.049 4.681a.5.5 0 0 1-.654-.266zm19.336-8.192a.5.5 0 0 1 .265-.655l.921-.39a.5.5 0 1 1 .39.921l-.921.39a.5.5 0 0 1-.654-.266zm4.6-1.951a.5.5 0 0 1 .265-.655l2.762-1.17a.5.5 0 1 1 .39.921l-2.762 1.17a.5.5 0 0 1-.65-.27zm10.128-4.291a.5.5 0 0 1 .265-.655l11.049-4.681a.5.5 0 0 1 .39.921l-11.046 4.68a.5.5 0 0 1-.653-.265z" fill="#eaeaee"/>
<path d="M103.245 194.26L208.809 161a1 1 0 0 0-.6-1.908l-105.565 33.26a1 1 0 1 0 .6 1.908z" fill="#eaeaee"/>
<path d="M116 185l26.482-8.343a.5.5 0 1 0-.3-.954l-26.482 8.342a.5.5 0 0 0 .3.954z" fill="#eaeaee"/>
<path d="M84.918 204.09a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 0 1 .3.954l-11.445 3.606a.5.5 0 0 1-.627-.327zm19.076-6.01a.5.5 0 0 1 .327-.627l2.861-.9a.5.5 0 1 1 .3.954l-2.861.9a.5.5 0 0 1-.627-.326zm6.677-2.1a.5.5 0 0 1 .327-.627l.954-.3a.5.5 0 1 1 .3.954l-.954.3a.5.5 0 0 1-.627-.33zm9.538-3a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 1 1 .3.954l-11.445 3.599a.5.5 0 0 1-.628-.327zm19.076-6.01a.5.5 0 0 1 .327-.627l2.861-.9a.5.5 0 1 1 .3.954l-2.861.9a.5.5 0 0 1-.628-.334zm6.677-2.1a.5.5 0 0 1 .327-.627l.954-.3a.5.5 0 1 1 .3.954l-.954.3a.5.5 0 0 1-.628-.337zm9.538-3a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 1 1 .3.954l-11.445 3.606a.5.5 0 0 1-.627-.342zm19.076-6.01a.5.5 0 0 1 .327-.627l2.861-.9a.5.5 0 0 1 .3.954l-2.861.9a.5.5 0 0 1-.629-.342zm6.677-2.1a.5.5 0 0 1 .327-.627l.954-.3a.5.5 0 1 1 .3.954l-.954.3a.5.5 0 0 1-.629-.345zm9.538-3a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 0 1 .3.954l-11.445 3.606a.5.5 0 0 1-.629-.35zm19.076-6.01a.5.5 0 0 1 .327-.627l2.861-.9a.5.5 0 0 1 .3.954l-2.861.9a.5.5 0 0 1-.629-.349zm6.677-2.1a.5.5 0 0 1 .327-.627l.954-.3a.5.5 0 0 1 .3.954l-.954.3a.5.5 0 0 1-.63-.352zm9.538-3a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 1 1 .3.954l-11.445 3.606a.5.5 0 0 1-.63-.357z" fill="#eaeaee"/>
<path d="M50.883 109.437L73.366 97.57s-15.334-12.008-1.472-21.924C84.256 66.8 96.745 77.71 96.745 77.71s-2.589-8.73 6.13-11.4c8.6-2.633 20.994 6.885 20.994 6.885l19.577-10.334" fill="#fff"/>
<path d="M141.872 58.947L136.085 62a.588.588 0 0 1-.549-1.04l5.788-3.055a.588.588 0 1 1 .549 1.04zm-15.152 8l-1.04.549a.588.588 0 0 1-.549-1.04l1.04-.549a.588.588 0 0 1 .549 1.04zM72.4 94.811l-1.674.884a.588.588 0 0 1-.549-1.04l.9-.478a24.222 24.222 0 0 1-.591-.543.588.588 0 1 1 .81-.853c.7.664 1.177 1.039 1.188 1.048a.588.588 0 0 1-.088.983zm-10 5.277l-12.485 6.59a.588.588 0 1 1-.549-1.04l12.485-6.59a.588.588 0 1 1 .549 1.04zm59.158-31.3a.588.588 0 0 1-.6-.026 45.206 45.206 0 0 0-3-1.776.588.588 0 1 1 .559-1.036 46.056 46.056 0 0 1 3.086 1.824.588.588 0 0 1-.045 1.014zM68.064 90.2a.588.588 0 0 1-.751-.176q-.348-.483-.681-1a.588.588 0 0 1 .993-.631c.208.328.423.643.642.946a.588.588 0 0 1-.133.821.666.666 0 0 1-.07.04zm25.892-16.6a.587.587 0 0 1-.6-.031c-.293-.2-.617-.4-.972-.62a.588.588 0 0 1 .611-1.006c.37.225.71.444 1.016.649a.588.588 0 0 1-.052 1.008zm15.815-10.047a.586.586 0 0 1-.405.053 14.722 14.722 0 0 0-7.557-.008 8.578 8.578 0 0 0-4.693 3.166.588.588 0 0 1-.966-.673 9.747 9.747 0 0 1 5.314-3.618 15.855 15.855 0 0 1 8.163-.013.588.588 0 0 1 .144 1.093zm-21.029 7.324a.587.587 0 0 1-.486.029 21.942 21.942 0 0 0-3.291-.988.588.588 0 0 1 .246-1.151 23.255 23.255 0 0 1 3.468 1.04.588.588 0 0 1 .063 1.07zm-23.055 8.291a.589.589 0 0 1-.827-.722 14.421 14.421 0 0 1 5.452-6.558 19.345 19.345 0 0 1 5.307-2.711.588.588 0 1 1 .361 1.123A18.263 18.263 0 0 0 71 72.844a13.284 13.284 0 0 0-5.031 6.006.59.59 0 0 1-.282.318z" fill="#eaeaee"/>
<path d="M144.627 62.6l-92.656 48.906a1.176 1.176 0 0 1-1.1-2.081l92.656-48.907a1.176 1.176 0 1 1 1.1 2.081z" fill="#fff"/>
<path d="M185.779 90.824l13.771 3.409s-1.925-10.7 7.531-9.678c8.434.909 9.583 10.091 9.583 10.091s2.165-4.6 6.788-2.471c4.558 2.1 6.186 10.666 6.186 10.666l11.991 2.968" fill="#fff"/>
<path d="M200.337 92.789l-13.752-3.4a.59.59 0 0 1 .284-1.146l13.752 3.4a.59.59 0 0 1-.284 1.146zm42.412 10.311l-.529-.131a.59.59 0 1 1 .284-1.146l.529.131a.59.59 0 0 1-.284 1.146zm-5.113-1.266l-3.438-.851a.59.59 0 1 1 .284-1.146l3.438.851a.59.59 0 0 1-.284 1.146zm-20.166-8.627a.614.614 0 0 1-.445-.506l-.035-.222a.589.589 0 0 1 .4-.662 5.483 5.483 0 0 1 6-2.637 7.111 7.111 0 0 1 1.259.447 10.622 10.622 0 0 1 4.381 4.221.591.591 0 0 1-1 .626 9.484 9.484 0 0 0-3.872-3.774 5.935 5.935 0 0 0-1.05-.374c-3.3-.818-4.891 2.422-4.957 2.562a.592.592 0 0 1-.681.319zm-14.675-9.061a.591.591 0 0 1-.2-1.053 6.8 6.8 0 0 1 3.628-1.19.591.591 0 0 1 .07 1.179 5.632 5.632 0 0 0-3.009.97.589.589 0 0 1-.489.094zm9 .181a.6.6 0 0 1-.146-.057 9.055 9.055 0 0 0-1-.478.59.59 0 0 1-.324-.769.6.6 0 0 1 .769-.325 10.36 10.36 0 0 1 1.128.54.59.59 0 0 1-.428 1.089z" fill="#eaeaee"/>
<path d="M242.217 107.236l-56.755-14.049a1.181 1.181 0 1 1 .567-2.292l56.755 14.049a1.181 1.181 0 0 1-.567 2.292z" fill="#fff"/>
<ellipse cx="155.535" cy="245.952" rx="7.463" ry="43.55" transform="rotate(-86.464 155.535 245.951)" fill="#eaeaee"/>
<path d="M112.695 226.207l-64.217-18.684a1 1 0 1 0-.559 1.92l64.217 18.684a1 1 0 1 0 .559-1.92z" fill="#eaeaee"/>
<path d="M243.246 226.609L178.5 209.394a1 1 0 0 0-.514 1.933l64.751 17.215a1 1 0 1 0 .514-1.933z" fill="#eaeaee"/>
<path d="M146.467 240.275a.789.789 0 0 0 .166-.037.82.82 0 0 1-.205.045z" fill="#fff"/>
<g fill="#fff">
<path d="M179.037 101.776l-.121-.547a12.937 12.937 0 0 0-.4-1.386 12.75 12.75 0 0 0-22.367-3.36l-4.583-.2a5 5 0 0 0-4.02-2.981 5 5 0 0 0-1.409-1.736l-.987 5.022-.259 1.327 1.261-.689 2.337-1.286.866 3.905 8.492.371.509-.8a9.751 9.751 0 0 1 16.444 10.478l-1.117 1.753a166 166 0 0 1 5.9 23.121c.32-.012 11.494 70.842 11.421 75.734a61.9 61.9 0 0 1-.1 10.1c-.433 3.64-1.661 13.195-5.4 14.023a2.76 2.76 0 0 1-1.855-.234c-.957-.484-1.864-1.833-3.817-11.386a123 123 0 0 1-15.17 4.294 149.57 149.57 0 0 1-17.448 2.843c2.283 9.563 1.761 10.211 1.121 11.019a2.76 2.76 0 0 1-1.582 1c-3.739.829-8.634-6.281-10.574-9.446a46.87 46.87 0 0 1-2.769-5.378c-2.744-3.417-5.519-2.72-2.775.881a47.78 47.78 0 0 0 2.805 5.4 38.26 38.26 0 0 0 6.116 7.863c2.261 2.07 4.879 3.528 7.652 2.913a5.81 5.81 0 0 0 3.292-2.061c.926-1.229 1.334-2.436 1.126-4.9a43.46 43.46 0 0 0-.916-5.379c4.453-.567 9.452-1.439 14.4-2.536 3.437-.762 7.923-1.869 12.292-3.277A61.92 61.92 0 0 0 179 232.33c.863 2.369 1.735 4.03 3.085 4.714a5.017 5.017 0 0 0 3.538.655c2.812-.623 4.751-1.742 6.522-6.337a46.05 46.05 0 0 0 1.841-10.27 75.3 75.3 0 0 0-.13-11.375c.029-4.493-.48-7.184-.945-13.441-1.184-16.126-9.59-59.447-11.018-64.876a168.439 168.439 0 0 0-5.141-20.053l.342-.537a12.8 12.8 0 0 0 1.475-3.236c.1-.361.189-.718.262-1.082a12.68 12.68 0 0 0 .206-4.716z"/>
<path d="M134.237 228.656l-6.947-14.593c-1.686-6.992-20.874-79.082-21.813-86.213l-3.447-2.2a9.76 9.76 0 0 1 10.489-16.449l2.087 1.33c4.834-2.638 12.315-6.642 15.256-7.744 3.252-1.223 9.874-6.285 12.141-8.119L146 91.43c-.11-.078-.209-.158-.317-.227a5 5 0 0 0-5.729.4c-3.239 2.623-8.884 6.732-11.307 7.627-2.713 1.021-8.725 4.167-14.083 7.075l-.6-.38a12.76 12.76 0 1 0-13.679 21.468l2.254 1.436c.592 4.611 14.794 90.939 28.1 99.384z"/>
<path d="M186.722 176.206s10.389-4.558 15.3-2.655c3.46 1.339 7.075 4.468 9.434 12.129s2.346 13.664-1.921 16.234-9.314 1.9-10.178-.979c-.621-2.067-2.547-9.158-2.547-9.158s-1.255-.941-6.281 1.683z"/>
<path d="M116.553 182.33s-16.275-1.34-19.879 3.447c-2.232 2.964-4.4 7.12-3.154 15.039s3.888 13.307 8.85 13.744 9.2-2.381 8.716-5.346c-.349-2.129-1.73-9.347-1.73-9.347s.135 1.219 11.44 2.024z"/>
</g>
<path d="M205.432 180.5c-3.039-4.414-6.895-5.465-18.936.241-3.035-15.577-8.491-43.6-8.527-43.761a260.987 260.987 0 0 0-.7-3.767l-.039-.176-.958-4.325-.113-.508-.361-1.63-.307-1.386-.314-1.416q-.216-.976-.5-1.937l-.206-.927q-.369-1.342-.756-2.67a5 5 0 0 0-.285-.961q-.305-1.008-.618-2c-.065-.293-.179-.575-.275-.871-.3-.957-.6-1.833-.924-2.735l1.623-2.8a7.778 7.778 0 0 0-13.12-8.359l-.448.7a12.79 12.79 0 0 1 7.84 4.408.5.5 0 0 1-.755.659 11.81 11.81 0 0 0-7.682-4.115l-.084.131-11.187-.495-.052-.234-.059.013-.576-2.6-4.955 2.737.067-.343-.192.1 1.014-5.131c-1.3 1.047-8.6 6.812-12.5 8.282-3.064 1.15-11.506 5.715-16.035 8.2-4.027 2.582-4.287 5.938-4.3 6.074a.5.5 0 0 1-.391.455l-.137.03a.5.5 0 0 1-.474-.52c-.035-.156.269-3.778 4.383-6.615l-2.111-1.345a7.778 7.778 0 0 0-8.359 13.12l3.817 2.432.463.287c.312 3.3 1.05 7.88 2.09 13.129a244.916 244.916 0 0 0 2.3 10.359l.182.82s.136 11.739 6.835 36.611c-13.88-.9-19.023.179-20.366 4.046-1.625 4.678.566 13.9 1.116 15.346a4 4 0 0 0 4.6 2.486 4.046 4.046 0 0 0 .557-.167c2.064-.782 1.925-2.583 1.145-4.648-1.047-2.768-.811-7.074-.755-9.09 2.342-1.09 8.613-.388 16.016.208a437.29 437.29 0 0 0 5.028 15.915c3.14 9.547 6.214 11.174 9.089 14.624a46.19 46.19 0 0 0 2.75 5.383c2.74 4.412 5.31 7.181 7.025 8.174l.357.177.091.041.277.092.13.033.2.037.156-.035.137-.03a.821.821 0 0 0 .205-.045l.059-.013a.781.781 0 0 0 .214-.191c.465-.584-.541-5.4-1.791-10.532a17.821 17.821 0 0 1-5.563-1.625.5.5 0 1 1 .446-.9 17.649 17.649 0 0 0 4.866 1.482c2.018-.14 4.231-.364 6.637-.693l.185-.041 2.114-.3.989-.158 1.423-.234 1.45-.25.976-.216 1.836-.356.586-.13 2.119-.47.312-.069a115.067 115.067 0 0 0 17.231-4.884c2.187-1.13 5.312-3.021 5.347-3.049a.5.5 0 0 1 .518.858c-.136.081-2.713 1.625-4.879 2.8 1.044 5.218 2.365 11.073 3.045 11.414a.77.77 0 0 0 .476.069l.049-.011.215-.048.088-.019.205-.138.087-.07.2-.2.09-.1.216-.273.078-.109.228-.358.046-.072a15.559 15.559 0 0 0 1.319-3.293l-.019-.088.221-.807.033-.13.215-.877-.022-.1c.072-.323.143-.646.211-.989.213-1.071 1.234-3.087.359-4.558a61.5 61.5 0 0 0 .075-9.829l-.015-.068-.033-.658c.569-3.666-.534-19.041-.534-19.041l-.4-2.048c5.392-2.54 8.767-3.317 11.088-3.221.826 1.839 2.666 5.179 2.763 8.137.074 2.206.67 4.468 2.876 4.4a4 4 0 0 0 3.869-4.122c-.047-1.53-.432-9.45-3.24-13.53z" fill="url(#a)"/>
<g fill="#f9f9fa">
<path d="M120.69 115.886c-2.232 1.282-7.4 4.415-7.3 9.164s2.239 19.146 3.2 20.184 16.5-.365 17.218-1.631-1.208-31.981-1.974-32.714-8.428 3.437-11.144 4.997z"/>
<path d="M173.771 187.946c-.254-1.838 4.982-9.811 7.446-13.441-2.179-10.881-6.769-31.937-7.541-34.944-1.738-10.523-4.47-21.185-8.722-28.908-2.181-3.961-12.142-6.956-23.757-5.16l-4.669 36.8s-.428 3.26-2.172 3.549c-1.431.237-13.05 3.558-17.183 4.745q.248.932.505 1.867c.248 1.63 4.281 18.045 7.083 28.711 4.165 2.817 11.809 8.193 12.283 10.016.429 1.652-2.666 8.234-4.839 12.552 2.917 7.157 5.781 12.57 7.815 14.158 12.135 9.6 40.827 2.219 43.492-11.964a69.862 69.862 0 0 0 .03-7.868c-3.884-3.376-9.553-8.541-9.771-10.113z"/>
</g>
<g fill="url(#b)">
<path d="M124.228 131.126a1.4 1.4 0 0 0 1.064-1.67l-.679-3.066a1.4 1.4 0 1 0-2.734.606l.679 3.066a1.4 1.4 0 0 0 1.67 1.064z"/>
<path d="M165.962 143.534a1.4 1.4 0 0 0 1.064-1.67l-.679-3.066a1.4 1.4 0 1 0-2.734.606l.679 3.066a1.4 1.4 0 0 0 1.67 1.064z"/>
<path d="M125.543 137.062a5.7 5.7 0 0 0 3.981-3.341 1 1 0 1 0-1.876-.7 3.72 3.72 0 0 1-2.548 2.091 3.67 3.67 0 0 1-3.193-.819 1 1 0 0 0-1.4 1.428 5.7 5.7 0 0 0 5.036 1.341z"/>
<path d="M167.278 149.47a5.7 5.7 0 0 0 3.991-3.343 1 1 0 0 0-1.866-.7 3.64 3.64 0 0 1-5.741 1.272 1 1 0 0 0-1.395 1.426 5.7 5.7 0 0 0 5.011 1.345z"/>
<path d="M156.452 156.752a6.476 6.476 0 0 1-.522.387 6.69 6.69 0 0 1 .8 1.377 4.69 4.69 0 0 1-.525 4.333 1 1 0 0 0 1.592 1.21 6.72 6.72 0 0 0 .808-6.321 7.62 7.62 0 0 0-.365-.762 4.47 4.47 0 0 0 1.118.081 5 5 0 0 0 3.889-2.108 1 1 0 0 0-1.693-1.061 3.06 3.06 0 0 1-2.335 1.181 4.41 4.41 0 0 1-1.548-.31 6.4 6.4 0 0 1-.921 1.814 1.579 1.579 0 0 1-.298.179z"/>
<path d="M155.906 157.107a6.476 6.476 0 0 0 .522-.387 1.58 1.58 0 0 0 .249-.184 6.4 6.4 0 0 0 .921-1.814 14.34 14.34 0 0 0 .973-5.9 2.88 2.88 0 0 0-1.181-2.149 1.75 1.75 0 0 0-1.792-.017c-2.144 1-6.864 6.325-7.348 10.764a1.52 1.52 0 0 0 .906 1.594c1.376.615 5.074-.928 6.75-1.907z"/>
<path d="M205.286 200.2a5.653 5.653 0 0 0 4.378-4.134c.93-3.7-1.4-15.212-7.182-18.87-5.91-3.741-18 3.543-19.94 4.564-.488.258-.789.725-.531 1.213a1 1 0 0 0 1.35.418c14.7-7.753 16.768-5.262 18.106-4.473 4.967 2.926 7.036 13.563 6.257 16.658a3.561 3.561 0 0 1-3.3 2.686.794.794 0 0 1-.858-.791c-1.144-9.775-3.335-12.139-3.582-12.377a1 1 0 0 0-.744-.28c-.358.018-2.956-.343-13.509 4.457a.97.97 0 0 0-.37 1.365 1.049 1.049 0 0 0 1.365.369c7.878-3.365 10.1-3.936 12.094-4.148.54.877 1.925 3.726 2.759 10.845a2.777 2.777 0 0 0 2.714 2.555 4.132 4.132 0 0 0 .993-.057z"/>
<path d="M122.9 161.253l-16.287 3.61a1 1 0 0 1-.433-1.953l16.287-3.61a1 1 0 0 1 .433 1.953z"/>
<path d="M124.115 166.721l-16.287 3.61a1 1 0 1 1-.433-1.953l16.287-3.61a1 1 0 1 1 .433 1.953z"/>
<path d="M125.219 171.7l-16.287 3.61a.5.5 0 1 1-.216-.976l16.284-3.61a.5.5 0 0 1 .216.976z"/>
<path d="M177.123 139.793a1 1 0 0 1-1.06-1.514l8.964-14.069a1 1 0 0 1 1.687 1.075l-8.964 14.069a1 1 0 0 1-.627.439z"/>
<path d="M105.051 211.452a5.653 5.653 0 0 1-5.63-2.134c-2.28-3.056-4.647-14.652-.62-20.181 3.171-4.352 22.929-3.128 25.11-2.93a1 1 0 0 1 .9 1.087 1.024 1.024 0 0 1-1.086.9c-22.257-.643-23.329 2.139-23.329 2.139-3.462 4.61-1.284 15.225.625 17.784a3.561 3.561 0 0 0 4.076 1.213.794.794 0 0 0 .488-1.06c-2.7-9.464-1.586-12.489-1.449-12.8a1 1 0 0 1 .58-.544c.337-.121 7.4-.753 19.966.848a1 1 0 1 1-.253 1.983c-10.344-1.318-16.621-1.676-18.541-1.106-.162 1.018-.346 4.18 1.62 11.072a2.777 2.777 0 0 1-1.524 3.4 4.132 4.132 0 0 1-.933.329z"/>
<path d="M154.954 133.172s2.432 4.544 3.463 4.542 1.742-2.279 4.785-3.524c3.272-1.339 5.033.538 6.124-.251s1.2-5.459.718-6.368-3.7-2.42-8.672-.654-6.905 5.347-6.418 6.255z"/>
<path d="M131.166 148.6a6.476 6.476 0 0 0 .643.1 1.58 1.58 0 0 0 .307.046 6.4 6.4 0 0 0 1.934-.631 14.34 14.34 0 0 0 4.857-3.481 2.88 2.88 0 0 0 .685-2.355 1.75 1.75 0 0 0-1.255-1.279c-2.225-.807-9.326-.381-12.807 2.416a1.52 1.52 0 0 0-.486 1.768c.538 1.397 4.244 2.916 6.122 3.416z"/>
<path d="M131.973 147.394s-.186 6.672 2.354 8.45"/>
<path d="M134.349 156.844a1 1 0 0 1-.595-.181c-2.9-2.028-2.8-8.559-2.781-9.3a.982.982 0 0 1 1.028-.972 1 1 0 0 1 .972 1.027c-.064 2.374.4 6.536 1.929 7.6a1 1 0 0 1-.553 1.819z"/>
<path d="M191.146 210.564c-.657-8.673-1.389-15.793-2.2-22.113a70.69 70.69 0 0 0-1.943.918c.927 6.929 1.676 13.949 2.144 21.2l.015.068a61.494 61.494 0 0 1-.075 9.829c-.254 3.16-.151 3.467-.359 4.558-.067.343-.139.666-.211.989l.022.1-.215.877-.033.13-.221.807.019.088a15.562 15.562 0 0 1-1.319 3.293l-.046.072-.228.358-.078.109-.216.273-.09.1-.2.2-.087.07-.205.138-.088.019-.215.048-.049.011a.77.77 0 0 1-.476-.069c-.67-.343-2-6.187-3.045-11.414 2.134-1.139 4.734-2.719 4.879-2.8a.5.5 0 1 0-.518-.858s-3.162 1.909-5.347 3.049l-.156.035a113.632 113.632 0 0 1-16.147 4.695l-1.25.277-2.119.47-.586.13-1.837.356-.976.216-1.45.25-1.423.233-.989.158-2.114.3-.185.041c-2.4.326-4.649.559-6.637.693a17.65 17.65 0 0 1-4.866-1.482.5.5 0 1 0-.446.9 17.821 17.821 0 0 0 5.563 1.625c1.25 5.131 2.256 9.948 1.791 10.532a.769.769 0 0 1-.224.193l-.1.022a.784.784 0 0 1-.166.037l-.137.03-.156.035-.2-.037-.13-.033-.276-.092-.091-.041-.357-.177c-1.723-.98-4.285-3.762-7.025-8.174a46.184 46.184 0 0 1-2.75-5.383c-2.877-3.46-6.6-10.108-9.711-19.642q-1.77-5.725-3.244-10.808c-.206-.022-.41-.043-.606-.059-.655-.052-1.3-.1-1.936-.157 4.495 15.768 9.369 28.443 13.727 31.643a46.869 46.869 0 0 0 2.769 5.378c1.93 3.116 6.835 10.274 10.574 9.446a2.76 2.76 0 0 0 1.582-1c.64-.808 1.16-1.466-1.121-11.019a149.565 149.565 0 0 0 17.448-2.843 123 123 0 0 0 15.17-4.294c1.953 9.554 2.86 10.9 3.817 11.386a2.76 2.76 0 0 0 1.855.234c3.739-.829 5.571-8.783 5.4-14.023a61.9 61.9 0 0 0 .1-10.101zm-79.172-59.54l-.182-.82-2.3-10.359c-1.052-5.257-1.793-9.845-2.11-13.124l-.441-.281-3.817-2.432a7.778 7.778 0 1 1 8.359-13.12l2.111 1.345c-4.114 2.837-4.368 6.448-4.383 6.615a.5.5 0 0 0 .474.52l.137-.03a.5.5 0 0 0 .391-.455c-.032-.146.249-3.5 4.3-6.074 4.568-2.5 12.973-7.044 16.035-8.2 3.885-1.465 11.18-7.23 12.5-8.282l.2-.167-1.02 5.194-.067.343 4.955-2.737.059-.013.63 2.841 11.181.492.084-.131a11.81 11.81 0 0 1 7.682 4.115.5.5 0 1 0 .755-.659 12.79 12.79 0 0 0-7.84-4.408l.448-.7a7.778 7.778 0 1 1 13.12 8.359l-1.634 2.564c.311.894.616 1.81.924 2.735.065.293.188.573.275.871q.3.957.618 2a5 5 0 0 0 .285.961q.386 1.328.756 2.67l.206.927q.216.976.5 1.938l.314 1.416.307 1.386.361 1.63.112.508.959 4.325.039.176c2.917 16.877 6.122 32.387 8.549 48.11a99.288 99.288 0 0 1 1.969-.924c-2.147-13.977-4.762-25.188-7.888-44.349a179.865 179.865 0 0 0-6.07-24.087l1.117-1.753a9.751 9.751 0 0 0-16.447-10.479l-.509.8-8.492-.371-.859-3.91-2.337 1.286-1.261.689.259-1.327.987-5.022.076-.4-.3.24-3.993 3.241c-2.342 1.82-8.958 6.861-12.167 8.094-2.941 1.1-10.422 5.106-15.256 7.744l-2.087-1.33a9.76 9.76 0 1 0-11.04 16.1q.269.185.55.351l3.447 2.2A571.373 571.373 0 0 0 117.6 187.6q1.175.069 2.441.158c-6.999-25.479-8.067-36.735-8.067-36.735z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

3
icons/filter-dismiss.svg Normal file
View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M15.94 6.144a4.537 4.537 0 1 1-9.074 0 4.537 4.537 0 0 1 9.074 0zm-5.895-1.942a.413.413 0 0 0-.584.584l1.359 1.358-1.36 1.358a.413.413 0 0 0 .584.583l1.358-1.358 1.358 1.358a.413.413 0 0 0 .583-.583l-1.358-1.358 1.358-1.358a.413.413 0 0 0-.583-.584l-1.358 1.359zm-2.069 6.067A5.392 5.392 0 0 1 6.884 9.03h-3.73a.619.619 0 0 0 0 1.238zM6.04 6.144c0-.426.05-.84.144-1.238H.68a.619.619 0 0 0 0 1.238zm2.063 7.012a.619.619 0 0 1 0 1.237H5.628a.619.619 0 0 1 0-1.237z"/>
</svg>

After

Width:  |  Height:  |  Size: 624 B

3
icons/filter-reload.svg Normal file
View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M10.985 1.627a4.537 4.537 0 0 0-4.12 4.518 4.537 4.537 0 1 0 9.075 0 4.537 4.537 0 0 0-4.955-4.518zm.377 1.76a2.727 2.727 0 0 1 1.84.71l.572-.572a.196.196 0 0 1 .334.14V5.23l-.117.118h-1.567a.196.196 0 0 1-.138-.336l.568-.569a2.24 2.24 0 0 0-1.492-.566 2.258 2.258 0 0 0-2.256 2.256 2.258 2.258 0 0 0 2.256 2.256 2.247 2.247 0 0 0 2.246-2.037.25.25 0 0 1 .268-.221.246.246 0 0 1 .22.267 2.735 2.735 0 0 1-2.734 2.48 2.75 2.75 0 0 1-2.746-2.745 2.75 2.75 0 0 1 2.746-2.746zM.68 4.907a.62.62 0 0 0 0 1.238h5.36c0-.426.05-.84.144-1.239H.68zm2.475 4.122a.62.62 0 0 0 0 1.239l4.82.002a5.392 5.392 0 0 1-1.092-1.24H3.155zm2.472 4.127a.619.619 0 0 0 0 1.237h2.475a.619.619 0 0 0 0-1.237H5.627z"/>
</svg>

After

Width:  |  Height:  |  Size: 848 B

3
icons/lock-closed.svg Normal file
View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M8 0a3.2 3.2 0 0 1 3.2 3.2v1.6h1.4a1.8 1.8 0 0 1 1.8 1.8v7.6a1.8 1.8 0 0 1-1.8 1.8H3.4a1.8 1.8 0 0 1-1.8-1.8V6.6a1.8 1.8 0 0 1 1.8-1.8h1.4V3.2A3.2 3.2 0 0 1 8 0Zm4.6 6H3.4a.6.6 0 0 0-.6.6v7.6a.6.6 0 0 0 .6.6h9.2a.6.6 0 0 0 .6-.6V6.6a.6.6 0 0 0-.6-.6ZM8 9.2a1.2 1.2 0 1 1 0 2.4 1.2 1.2 0 0 1 0-2.4zm0-8a2 2 0 0 0-2 2v1.6h4V3.2a2 2 0 0 0-2-2Z"/>
</svg>

After

Width:  |  Height:  |  Size: 502 B

3
icons/merge.svg Normal file
View file

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path fill="#212121" d="M0 3.789c0-.349.283-.632.632-.632h2.743c.838 0 1.64.333 2.233.925l2.484 2.485a2.74 2.74 0 0 0 1.936.801h3.816l-3.132-3.132a.632.632 0 1 1 .894-.894l4.21 4.211a.632.632 0 0 1 0 .894l-4.21 4.21a.631.631 0 1 1-.894-.893l3.132-3.132h-3.765a2.74 2.74 0 0 0-1.985.852L5.837 11.86a3.158 3.158 0 0 1-2.29.983H.632a.632.632 0 0 1 0-1.264h2.915c.52 0 1.016-.213 1.374-.59l2.257-2.376c.217-.228.458-.428.718-.597a4.004 4.004 0 0 1-.697-.556L4.715 4.976a1.895 1.895 0 0 0-1.34-.555H.632A.632.632 0 0 1 0 3.789Z" />
</svg>

After

Width:  |  Height:  |  Size: 676 B

View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M4 3.192a2 2 0 0 0-2 2v4.585H1c-1.334 0-1.334 1.485 0 1.485h7v-.485a1 1 0 0 1 .872-.99h-5.64V7.34h.01V5.36a1.11 1.11 0 0 1 1.113-1.114h7.035a1.11 1.11 0 0 1 1.113 1.113v1.418h.496a1 1 0 0 1 1 1V5.192a2 2 0 0 0-2-2h-8z"/>
<path d="M8.695 10.604h6.186L12.528 8.25a.342.342 0 0 1 .484-.483L16 10.758v.376l-2.989 2.988a.34.34 0 0 1-.483 0 .343.343 0 0 1 0-.483l2.353-2.353H8.695a.341.341 0 0 1 0-.682z"/>
</svg>

After

Width:  |  Height:  |  Size: 561 B

View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M4.04 4.69a2 2 0 0 0-2 2v4.585h-1c-1.334 0-1.334 1.485 0 1.485h7v-.485a1 1 0 0 1 .872-.99h-5.64V8.838h.01v-1.98a1.11 1.11 0 0 1 1.113-1.114h7.035a1.11 1.11 0 0 1 1.113 1.113v1.418h.496a1 1 0 0 1 1 1V6.69a2 2 0 0 0-2-2h-8zm8.5 4.585c-.25 0-.5.167-.5.5v2.5h-2.5c-.668 0-.668 1 0 1h2.5v2.5c0 .667 1 .667 1 0v-2.5h2.5c.666 0 .666-1 0-1h-2.5v-2.5c0-.333-.25-.5-.5-.5z"/>
<path d="M12.5 2.721a3.5 3.5 0 0 1 3.5 3.5v2.5c0 .819-.393 1.545-1 2v-4.5a2.5 2.5 0 0 0-2.5-2.5H3c.456-.606 1.182-1 2-1z"/>
</svg>

After

Width:  |  Height:  |  Size: 650 B

View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M16 .655a.632.632 0 0 0-1.263 0v2.863C13.765 2.35 12.506 1.36 10.924.87a9.419 9.419 0 0 0-6.091.162C2.883 1.758 1.04 3.23.078 4.984a.632.632 0 1 0 1.107.607c.796-1.45 2.38-2.74 4.088-3.375a8.156 8.156 0 0 1 5.277-.139c1.433.444 2.586 1.401 3.477 2.578h-3.29a.632.632 0 0 0 0 1.264h4.631A.632.632 0 0 0 16 5.287zM4.037 6.939a2 2 0 0 0-2 2v4.089H.998c-1.332.002-1.332 1.527 0 1.527h14c1.335.002 1.335-1.527 0-1.527v.002h-1.3V8.938a2 2 0 0 0-2-2zm.407 1.065h6.818a1.11 1.11 0 0 1 1.113 1.113v3.913H3.33V9.117a1.11 1.11 0 0 1 1.114-1.113z"/>
</svg>

After

Width:  |  Height:  |  Size: 696 B

View file

@ -1,4 +0,0 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M12.5 3A3.5 3.5 0 0 1 16 6.5V9c0 .818-.393 1.544-1 2V6.5A2.5 2.5 0 0 0 12.5 4H3c.456-.607 1.182-1 2-1h7.5Z"/>
<path d="M15.995 12.432 16 12.5c0 .253-.226.462-.519.495L15.4 13H.6c-.331 0-.6-.224-.6-.5 0-.253.226-.462.519-.495L.6 12H1V7a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v5h1.4c.304 0 .555.188.595.432ZM13 7a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v5h11V7Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 501 B

View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="10">
<path fill="context-stroke" d="m0 0 10 10L20 0Z"/>
<path fill="context-fill" d="m1 0 9 9 9-9z"/>
</svg>

After

Width:  |  Height:  |  Size: 172 B

View file

@ -0,0 +1,7 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="10">
<path fill="context-stroke" d="M 0,10 L 10,0 20,10 z"/>
<path fill="context-fill" d="M 1,10 L 10,1 19,10 z"/>
</svg>

After

Width:  |  Height:  |  Size: 397 B

4
icons/reload-auto.svg Normal file
View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M8.366 0a.475.475 0 0 0-.474.48v1.967l-.016.105v.09c-3.62.074-6.543 3.04-6.543 6.677a6.689 6.689 0 0 0 6.68 6.68 6.652 6.652 0 0 0 6.652-6.033.599.599 0 0 0-.538-.651.604.604 0 0 0-.65.536 5.466 5.466 0 0 1-5.464 4.955 5.493 5.493 0 0 1-5.487-5.487A5.49 5.49 0 0 1 7.89 3.835v1.762c0 .426.515.64.815.339L11.4 3.242v-.405L8.707.14a.469.469 0 0 0-.34-.14Z"/>
<path d="m7.554 11.454-2.29-2.29c-.552-.581.29-1.424.87-.872l1.767 1.766 3.405-3.407a.617.617 0 0 1 .872.872L8.25 11.45z"/>
</svg>

After

Width:  |  Height:  |  Size: 641 B

3
icons/shield-task.svg Normal file
View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M14.6 2.4c-2.13 0-4.206-.754-6.24-2.28a.6.6 0 0 0-.72 0C5.606 1.646 3.53 2.4 1.4 2.4a.6.6 0 0 0-.6.6v4.2c0 4 2.366 6.94 6.98 8.758a.6.6 0 0 0 .44 0C12.834 14.141 15.2 11.2 15.2 7.2V3a.6.6 0 0 0-.6-.6Zm-2.794 3.442-4.8 4.4a.6.6 0 0 1-.83-.018l-2-2a.6.6 0 1 1 .848-.848L6.618 8.97l4.376-4.012a.6.6 0 0 1 .812.884z"/>
</svg>

After

Width:  |  Height:  |  Size: 473 B

View file

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="47.7, 100" d="M30 0h-1.5C20.286.018 16.736 3.745 15 7.967l.045.105c.18.447.342.9.486 1.36.21.675.392 1.358.547 2.047.101.45.19.899.272 1.337.081.44.154.87.222 1.29.137.837.253 1.625.377 2.335.178 1.01.397 2.01.656 3.002.182.676.393 1.345.631 2.004a17.87 17.87 0 0 0 1.05 2.348c.29.525.612 1.03.966 1.514.344.463.722.9 1.13 1.306a10.525 10.525 0 0 0 1.79 1.414c.674.422 1.392.77 2.14 1.041a15.082 15.082 0 0 0 2.523.673c.47.083.942.148 1.417.195.245.024.494.045.748.062V0"/>
</svg>

After

Width:  |  Height:  |  Size: 694 B

View file

@ -0,0 +1,9 @@
<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="46.5, 100" d="M28.5 0C14.55.03 14.046 10.757 13.05 16.442 11.56 24.942 8.125 29.452 0 30h30V0m0 0h-1.5"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" x="-2.2" transform="scale(0.036, 0.0333)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 540 B

View file

@ -0,0 +1,3 @@
<svg width="18" height="36" viewBox="0 0 18 36" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="47 100" d="M18 0a9 9 0 0 0-7.571 4.135 9 9 0 0 0-.617 1.127 9 9 0 0 0-.72 2.457A9 9 0 0 0 9 9v18a9 9 0 0 0 4.135 7.571 9 9 0 0 0 1.127.617 9 9 0 0 0 2.457.72A9 9 0 0 0 18 36V0"/>
</svg>

After

Width:  |  Height:  |  Size: 399 B

View file

@ -0,0 +1,9 @@
<svg width="18" height="36" viewBox="0 0 18 36" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="47 100" d="M18 0a9 9 0 0 0-7.571 4.135 9 9 0 0 0-.617 1.127 9 9 0 0 0-.72 2.457A9 9 0 0 0 9 9v18a9 9 0 0 1-4.135 7.571 9 9 0 0 1-1.127.617 9 9 0 0 1-2.457.72A9 9 0 0 1 0 36h18V0"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" x="-2.5" transform="scale(0.065, 0.0277)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 615 B

View file

@ -0,0 +1,3 @@
<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="59 100" d="M36 0h-9l-9 18 9 18h9V0"/>
</svg>

After

Width:  |  Height:  |  Size: 258 B

View file

@ -0,0 +1,9 @@
<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="59 100" d="M0 36h9L27 0h9v36z"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" x="-2.5" transform="scale(0.0299, 0.0277)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 468 B

View file

@ -0,0 +1,3 @@
<svg width="16" height="32" viewBox="0 0 16 32" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="44.5, 100" d="M16 0h-4a4 4 0 0 0-3.365 1.838 4 4 0 0 0-.473 1.035A4 4 0 0 0 8 4v24a4 4 0 0 0 1.838 3.365 4 4 0 0 0 1.035.473A4 4 0 0 0 12 32h4V0"/>
</svg>

After

Width:  |  Height:  |  Size: 368 B

View file

@ -0,0 +1,9 @@
<svg width="16" height="32" viewBox="0 0 16 32" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="37, 100" d="M12 0a4 4 0 0 0-3.365 1.838A4 4 0 0 0 8 4v24a4 4 0 0 1-1.38 3.023A4 4 0 0 1 4 32h12V0m0 0h-4"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" x="-2.5" transform="scale(0.075, 0.0333)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 542 B

View file

@ -0,0 +1,3 @@
<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="60, 100" d="M36 0c-6 0-12 0-15 6-1.5 3-2.25 7.5-3 12 .188 1.125.375 2.25.574 3.352.1.55.202 1.096.309 1.632.107.536.219 1.063.336 1.578.117.516.24 1.021.37 1.51.131.49.268.963.415 1.42.146.457.301.898.467 1.317a14.336 14.336 0 0 0 .818 1.736 9.98 9.98 0 0 0 1.695 2.236 9.134 9.134 0 0 0 2.498 1.754c.302.147.61.278.926.397.316.118.639.224.967.318.328.094.66.176 1 .248.34.072.685.133 1.033.186.71.102 1.423.176 2.139.222.363.024.73.042 1.098.055.368.013.739.021 1.11.027C34.5 36 35.25 36 36 36V0"/>
</svg>

After

Width:  |  Height:  |  Size: 720 B

View file

@ -0,0 +1,9 @@
<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="59.75 100" d="M 0,36 C 6,36 12.001,36 15.0005,30.0005 18,24.001 18,12.001 21.0005,6.0005 24.001,0 30,0 36,0 c 0,0 0,36 0,36 0,0 -36,0 -36,0 z"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" x="-2.5" transform="scale(0.0299, 0.0277)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 580 B

View file

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="47, 100" d="M0 0h1.5m0 0C9.714.018 13.264 3.745 15 7.967l-.045.105c-.18.447-.342.9-.486 1.36a26.38 26.38 0 0 0-.547 2.047c-.101.45-.19.899-.272 1.337-.08.44-.154.87-.222 1.29-.137.837-.253 1.625-.377 2.335a38.38 38.38 0 0 1-.305 1.547c-.109.5-.225.986-.351 1.455a25.149 25.149 0 0 1-.631 2.004 17.918 17.918 0 0 1-1.05 2.348 14.16 14.16 0 0 1-.966 1.514c-.344.463-.722.9-1.13 1.306a10.525 10.525 0 0 1-1.79 1.414c-.674.422-1.392.77-2.14 1.041a13.21 13.21 0 0 1-1.213.383c-.432.116-.87.212-1.31.29-.47.083-.942.148-1.417.195-.245.024-.494.045-.748.062V0"/>
</svg>

After

Width:  |  Height:  |  Size: 776 B

View file

@ -0,0 +1,9 @@
<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="46.5, 100" d="M0 0h1.5m0 0c13.95.03 14.454 10.757 15.45 16.442C18.44 24.942 21.875 29.452 30 30H0V0"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" transform="scale(0.036, 0.0333)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 528 B

View file

@ -0,0 +1,3 @@
<svg width="18" height="36" viewBox="0 0 18 36" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="47 100" d="M0 0a9 9 0 0 1 7.571 4.135 9 9 0 0 1 .617 1.127 9 9 0 0 1 .72 2.457A9 9 0 0 1 9 9v18a9 9 0 0 1-4.135 7.571 9 9 0 0 1-1.127.617 9 9 0 0 1-2.457.72A9 9 0 0 1 0 36V0"/>
</svg>

After

Width:  |  Height:  |  Size: 397 B

View file

@ -0,0 +1,9 @@
<svg width="18" height="36" viewBox="0 0 18 36" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="47 100" fill="context-fill" d="M0 0a9 9 0 0 1 9 9v18a9 9 0 0 0 9 9H0V0"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" transform="scale(0.065, 0.0277)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 479 B

View file

@ -0,0 +1,3 @@
<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="59 100" d="M0 0h9l9 18-9 18H0V0"/>
</svg>

After

Width:  |  Height:  |  Size: 255 B

View file

@ -0,0 +1,9 @@
<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="59 100" fill="context-fill" d="M36 36h-9L9 0H0v36z"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" transform="scale(0.0299, 0.0277)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 460 B

View file

@ -0,0 +1,3 @@
<svg width="16" height="32" viewBox="0 0 16 32" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="44.5, 100" d="M0 0h4a4 4 0 0 1 3.365 1.838 4 4 0 0 1 .473 1.035A4 4 0 0 1 8 4v24a4 4 0 0 1-1.838 3.365 4 4 0 0 1-1.035.473A4 4 0 0 1 4 32H0V0"/>
</svg>

After

Width:  |  Height:  |  Size: 365 B

View file

@ -0,0 +1,9 @@
<svg width="16" height="32" viewBox="0 0 16 32" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="37, 100" d="M4 0a4 4 0 0 1 3.365 1.838A4 4 0 0 1 8 4v24a4 4 0 0 0 1.838 3.365A4 4 0 0 0 12 32H0V0m0 0h4"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" transform="scale(0.075, 0.0333)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 532 B

View file

@ -0,0 +1,3 @@
<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
<path fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="60, 100" d="M0 0c6 0 12 0 15 6 1.5 3 2.25 7.5 3 12-.188 1.125-.375 2.25-.574 3.352-.1.55-.202 1.096-.309 1.632a60.698 60.698 0 0 1-.336 1.578c-.117.516-.24 1.021-.37 1.51-.131.49-.268.963-.415 1.42a21.2 21.2 0 0 1-.467 1.317 14.336 14.336 0 0 1-.818 1.736 9.98 9.98 0 0 1-1.695 2.236 9.134 9.134 0 0 1-2.498 1.754c-.302.147-.61.278-.926.397-.316.118-.639.224-.967.318-.33.094-.664.177-1 .248-.34.072-.685.133-1.033.186a27.096 27.096 0 0 1-2.139.222c-.363.024-.73.042-1.098.055-.368.013-.739.021-1.11.027C1.5 36 .75 36 0 36V0"/>
</svg>

After

Width:  |  Height:  |  Size: 748 B

View file

@ -0,0 +1,9 @@
<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="tabCorner" fill="context-fill" stroke="context-stroke" stroke-opacity="context-stroke-opacity" stroke-width="1.5" stroke-dasharray="59.75 100" d="M 36,36 C 30,36 23.999,36 20.9995,30.0005 18,24.001 18,12.001 14.9995,6.0005 11.999,0 6,0 0,0 c 0,0 0,36 0,36 0,0 36,0 36,0 z"/>
</defs>
<clipPath id="svgClipPath" clipPathUnits="objectBoundingBox">
<use href="#tabCorner" transform="scale(0.0299, 0.0277)" />
</clipPath>
<use href="#tabCorner" />
</svg>

After

Width:  |  Height:  |  Size: 569 B

4
icons/tab-copy.svg Normal file
View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M3.662 4.678a2 2 0 0 0-2 2v4.601H.998c-1.332.002-1.332 1.527 0 1.527h14c1.335.002 1.335-1.527 0-1.527v.002h-1V6.678a2 2 0 0 0-2-2zm.565 1.066h7.035a1.11 1.11 0 0 1 1.113 1.113v4.424H3.113V6.857a1.11 1.11 0 0 1 1.114-1.113z"/>
<path d="M12.5 2.721a3.5 3.5 0 0 1 3.5 3.5v2.5c0 .819-.393 1.545-1 2v-4.5a2.5 2.5 0 0 0-2.5-2.5H3c.456-.606 1.182-1 2-1z"/>
</svg>

After

Width:  |  Height:  |  Size: 510 B

View file

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M3.207 2.4h1.207A1.4 1.4 0 0 1 5.8 1.2h6.4a2.6 2.6 0 0 1 2.6 2.6v6.4a1.4 1.4 0 0 1-1.2 1.386v1.206A2.6 2.6 0 0 0 16 10.2V3.8A3.8 3.8 0 0 0 12.2 0H5.8a2.6 2.6 0 0 0-2.593 2.4ZM0 5.8a2.6 2.6 0 0 1 2.6-2.6h7.6a2.6 2.6 0 0 1 2.6 2.6v7.6a2.6 2.6 0 0 1-2.6 2.6H2.6A2.6 2.6 0 0 1 0 13.4Zm2.6-1.4a1.4 1.4 0 0 0-1.4 1.4v5.8h4.6a1.8 1.8 0 0 1 1.8 1.8v1.4h2.6a1.4 1.4 0 0 0 1.4-1.4V5.8a1.4 1.4 0 0 0-1.4-1.4zm3.8 10.4v-1.4a.6.6 0 0 0-.6-.6H1.2v.6a1.4 1.4 0 0 0 1.4 1.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 620 B

4
icons/tab-unload.svg Normal file
View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M4 3a2 2 0 0 0-2 2v6H1a1 1 0 0 0 0 2h5.707a5.297 5.297 0 0 1-.049-.709 5.297 5.297 0 0 1 5.297-5.299A5.297 5.297 0 0 1 14 7.404V5a2 2 0 0 0-2-2Z"/>
<path d="M12.098 8.823c-1.423.007-2.729.726-3.408 1.879V9.497c0-.3-.487-.3-.487 0v2.245c0 .124.109.224.243.224h2.435a.225.225 0 0 0 0-.449H9.344a.413.413 0 0 0 .027-.038c1.137-2.817 5.659-2.062 5.659.94 0 3-4.522 3.756-5.659.939-.235-.544-1.121-.239-.912.314 1.104 2.711 5.056 3.162 6.843.781 1.786-2.381-.064-5.633-3.204-5.63Z"/>
</svg>

After

Width:  |  Height:  |  Size: 639 B

3
icons/timer10.svg Normal file
View file

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M7.024 1.951a6.636 6.636 0 0 1 6.538 5.5 3.34 3.34 0 0 0-1.184.037A5.465 5.465 0 0 0 1.56 8.585a5.463 5.463 0 0 0 5.854 5.45v1.173a6.634 6.634 0 1 1-.39-13.257zm.586 5.78V4.878l-.006-.08a.586.586 0 0 0-1.165.08V8.39l.005.07a1.36 1.36 0 0 1 .734-.585Zm4.993-5.691.064.047.904.752a.585.585 0 0 1-.684.947l-.065-.047-.904-.753a.585.585 0 0 1 .685-.946ZM8.78 0a.585.585 0 0 1 .08 1.165l-.08.006H5.268a.585.585 0 0 1-.08-1.166L5.269 0zm.343 8.306c.152.11.243.286.243.474v6.635a.585.585 0 0 1-1.17 0V9.593l-.401.133a.585.585 0 0 1-.37-1.11l1.17-.39a.585.585 0 0 1 .528.08zm1.414 2.426a2.537 2.537 0 0 1 5.073 0v2.731a2.537 2.537 0 0 1-5.073 0Zm2.536-1.366c-.754 0-1.366.611-1.366 1.366v2.731a1.366 1.366 0 1 0 2.732 0v-2.731c0-.755-.611-1.366-1.366-1.366z"/>
</svg>

After

Width:  |  Height:  |  Size: 911 B

View file

@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M9.709 7.344h-1.84a.477.477 0 0 0-.337.813l2.555 2.554a.477.477 0 0 0 .673 0l2.554-2.554c.3-.3.088-.813-.337-.813h-1.84V4.548h.002v-1.19h-.002v-.786H9.71v.785h-.003v1.19h.004v2.797z"/>
<path d="M13.714 3.357h-1.146v1.19h1.146c.329 0 .596.267.596.596v7.619a.595.595 0 0 1-.596.595H2.286a.595.595 0 0 1-.596-.595V3.238c0-.328.267-.595.596-.595h3.47a.6.6 0 0 1 .442.197l1.36 1.51A.593.593 0 0 0 8 4.548h.277v-1.19h-.012L7.082 2.042a1.79 1.79 0 0 0-1.328-.59H2.286C1.3 1.452.5 2.252.5 3.237v9.524c0 .985.801 1.786 1.786 1.786h11.428c.985 0 1.786-.801 1.786-1.786v-7.62c0-.984-.801-1.785-1.786-1.785z"/>
</svg>

After

Width:  |  Height:  |  Size: 759 B

View file

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M8 0c.312 0 .57.232.61.532l.005.083v2.746l1.782-1.565a.615.615 0 0 1 .813.924L8.615 5l-.001 2.384H11l2.28-2.594a.615.615 0 0 1 .796-.11l.073.055a.615.615 0 0 1 .11.795l-.054.073-1.566 1.78h2.745c.311 0 .569.232.61.532L16 8a.616.616 0 0 1-.532.61l-.083.005h-2.747l1.566 1.783a.615.615 0 0 1 .008.804l-.064.065a.615.615 0 0 1-.804.007l-.065-.063L11 8.615l-2.386-.001V11l2.597 2.28a.616.616 0 0 1 .11.796l-.054.073a.616.616 0 0 1-.796.111l-.073-.055-1.783-1.567-.001 2.747a.616.616 0 0 1-.532.61L7.997 16a.616.616 0 0 1-.61-.532l-.005-.083V12.64l-1.779 1.564a.615.615 0 0 1-.813-.924L7.382 11V8.615H5.18l-2.459 2.8a.615.615 0 0 1-.925-.813l1.746-1.987H.615a.616.616 0 0 1-.61-.531L0 8c0-.311.231-.569.532-.61l.083-.005H3.18L1.795 5.807a.615.615 0 0 1 .925-.811l2.096 2.388h2.567V4.998L4.79 2.718a.616.616 0 0 1-.11-.796l.055-.072a.616.616 0 0 1 .795-.111l.073.055 1.78 1.565.002-2.744c0-.283.191-.521.451-.593l.08-.016z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -31,7 +31,7 @@ Shows this help message
.PARAMETER WhatIf .PARAMETER WhatIf
Runs the installer without actioning any file copies/moves Runs the installer without actioning any file copies/moves
Equivelant to a dry-run Equivalent to a dry-run
.EXAMPLE .EXAMPLE
PS> .\Install.ps1 -u -f C:\Users\someone\ff-profiles PS> .\Install.ps1 -u -f C:\Users\someone\ff-profiles

View file

@ -67,7 +67,7 @@ mac_command_line_developer_tools() {
check_git() { check_git() {
if ! [ -x "$(command -v git)" ]; then if ! [ -x "$(command -v git)" ]; then
if [ "${OSTYPE}" == "linux-gnu" ] || [ "${OSTYPE}" == "FreeBSD" ]; then if [[ "${OSTYPE}" == "linux"* || "${OSTYPE}" == "FreeBSD" ]]; then
pacapt_install pacapt_install
sudo pacapt -S git sudo pacapt -S git
pacapt_uninstall pacapt_uninstall
@ -185,8 +185,8 @@ write_file() {
get_ini_section() { get_ini_section() {
local filePath="$1" local filePath="$1"
local ouput=$(grep -E "^\[" "${filePath}" |sed -e "s/^\[//g" -e "s/\]$//g") local output=$(grep -E "^\[" "${filePath}" |sed -e "s/^\[//g" -e "s/\]$//g")
echo "${ouput}" echo "${output}"
} }
get_ini_value() { get_ini_value() {
local filePath="$1" local filePath="$1"

View file

@ -21,10 +21,14 @@
}, },
"devDependencies": { "devDependencies": {
"csstree-validator": "^3.0.0", "csstree-validator": "^3.0.0",
"fast-glob": "^3.2.11", "fast-glob": "^3.2.12",
"jest": "^27.5.1", "jest": "^29.3.1",
"prettier": "^2.6.1", "jest-environment-node-single-context": "^29.0.0",
"sass": "^1.49.0", "prettier": "^2.7.1",
"sass": "^1.56.1",
"sass-true": "^6.1.0" "sass-true": "^6.1.0"
},
"jest": {
"testEnvironment": "jest-environment-node-single-context"
} }
} }

View file

@ -1,5 +1,5 @@
#back-button[disabled="true"] { #back-button[disabled="true"] {
margin-left: -36px !important; margin-left: var(--uc-toolbarbutton-hide-size) !important;
opacity: 0 !important; opacity: 0 !important;
pointer-events: none; pointer-events: none;
} }

View file

@ -5,12 +5,16 @@
will-change: margin-bottom, opacity; will-change: margin-bottom, opacity;
@include Option("userChrome.autohide.toolbar_overlap") { @include Option("userChrome.autohide.toolbar_overlap") {
@include NotOption("userChrome.autohide.toolbar_overlap.allow_layout_shift") {
@include NotHas {
&[collapsed="true"] { &[collapsed="true"] {
visibility: visible !important; visibility: visible !important;
max-height: unset !important; max-height: unset !important;
} }
} }
} }
}
}
#navigator-toolbox:is(:hover, :focus-within) #PersonalToolbar:not([customizing]) { #navigator-toolbox:is(:hover, :focus-within) #PersonalToolbar:not([customizing]) {
margin-bottom: 0; margin-bottom: 0;
@ -20,8 +24,8 @@
@include Animate { @include Animate {
#PersonalToolbar:not([customizing]) { #PersonalToolbar:not([customizing]) {
// --ext-theme-background-transition: background-color 0.1s cubic-bezier(.17,.67,.83,.67); // --ext-theme-background-transition: background-color 0.1s cubic-bezier(.17,.67,.83,.67);
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), transition: margin-bottom var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), opacity var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
min-height 170ms ease-out, max-height 170ms ease-out, var(--ext-theme-background-transition) !important; min-height 170ms ease-out, max-height 170ms ease-out, var(--ext-theme-background-transition) !important;
} }
#navigator-toolbox:is(:hover, :focus-within) #PersonalToolbar:not([customizing]) { #navigator-toolbox:is(:hover, :focus-within) #PersonalToolbar:not([customizing]) {

View file

@ -1,12 +1,34 @@
@include Option("userChrome.autohide.tabbar", "userChrome.autohide.navbar", "userChrome.autohide.bookmarkbar", "userChrome.tabbar.one_liner") {
:root { :root {
--uc-tabbar-height: var(--tab-min-height); // calc((var(--tab-block-margin) * 2) + var(--tab-min-height)); --uc-autohide-toolbar-speed: 0.25s;
--uc-autohide-toolbar-delay: 600ms;
}
@include Option("userChrome.autohide.tabbar", "userChrome.autohide.navbar", "userChrome.autohide.bookmarkbar", "userChrome.tabbar.one_liner", "userChrome.tabbar.on_bottom.menubar_on_top", "userChrome.hidden.tabbar", "userChrome.navbar.as_sidebar") {
:root {
--uc-tabbar-height: var(--uc-tabbar-height-default);
--uc-tabbar-height-default: var(--tab-min-height); // calc((var(--tab-block-margin) * 2) + var(--tab-min-height));
--uc-tabbar-hide-height: calc(-1 * var(--uc-tabbar-height)); --uc-tabbar-hide-height: calc(-1 * var(--uc-tabbar-height));
--uc-navbar-height: calc(16px + 2 * (var(--toolbarbutton-inner-padding) + var(--toolbarbutton-outer-padding)));
--uc-navbar-height: var(--uc-navbar-height-default);
--uc-navbar-height-default: calc(16px + 2 * (var(--toolbarbutton-inner-padding) + var(--toolbarbutton-outer-padding)));
--uc-navbar-hide-height: calc(-1 * var(--uc-navbar-height)); --uc-navbar-hide-height: calc(-1 * var(--uc-navbar-height));
--uc-bm-height: calc(20px + (2 * var(--bookmark-block-padding, 4px))); /* 20px = 16px + (2px * 2) [margin block] */
--uc-bm-height: var(--uc-bm-height-default);
--uc-bm-height-default: calc(20px + (2 * var(--bookmark-block-padding, 4px))); /* 20px = 16px + (2px * 2) [margin block] */
--uc-bm-hide-height: calc(-1 * var(--uc-bm-height)); --uc-bm-hide-height: calc(-1 * var(--uc-bm-height));
// Mac - None exist
// https://github.com/mozilla/gecko-dev/blob/92d3050ecbbdd077ffa4cb78e0dffc4bd5021109/browser/base/content/browser.css#L131
// https://github.com/mozilla/gecko-dev/blob/92d3050ecbbdd077ffa4cb78e0dffc4bd5021109/browser/themes/linux/browser.css#L327
// https://github.com/mozilla/gecko-dev/blob/92d3050ecbbdd077ffa4cb78e0dffc4bd5021109/browser/themes/windows/browser-aero.css#L14
// https://github.com/mozilla/gecko-dev/blob/92d3050ecbbdd077ffa4cb78e0dffc4bd5021109/browser/themes/windows/browser.css#L65
$_menubarPadding: 1px * 2; // menubar padding block 1px
$_menubarHeightDefault: 1rem + 0.3rem * 2; // text 1rem, menu padding 0.3em
--uc-titlebar-buttonbox-height: #{ 32px + $_menubarPadding };
--uc-menubar-height: 0px;
--uc-menubar-height-default: #{ calc($_menubarHeightDefault + $_menubarPadding) };
--uc-menubar-inner-height: #{ calc($_menubarHeightDefault - $_menubarPadding) };
@include Option("userChrome.hidden.tabbar") { @include Option("userChrome.hidden.tabbar") {
@include OneLinerNavbarContent() { @include OneLinerNavbarContent() {
--uc-tabbar-height: 0px; --uc-tabbar-height: 0px;
@ -16,18 +38,64 @@
--uc-navbar-height: 0px; --uc-navbar-height: 0px;
} }
} }
@include Has {
:root {
&:not([tabsintitlebar]):has(#toolbar-menubar) {
--uc-menubar-height: var(--uc-menubar-height-default); // text 1rem, menu padding 0.3em
}
&[tabsintitlebar]:has(#toolbar-menubar[autohide="true"]) {
@include OS($linux) {
--uc-menubar-height: calc(var(--tab-min-height) + 2 * var(--tab-block-margin));
}
@include OS($win10) {
--uc-menubar-height: calc(var(--tab-min-height) - var(--tabs-navbar-shadow-size));
}
@include OS($win7, $win8) {
--uc-menubar-height: calc(var(--tab-min-height) + var(--tab-block-margin));
}
}
&[tabsintitlebar]:has(#toolbar-menubar[autohide="false"]) {
--uc-menubar-height: var(--uc-titlebar-buttonbox-height);
}
&:not([tabsintitlebar]),
&[tabsintitlebar] {
&:has(#toolbar-menubar[autohide="true"][inactive="true"]) {
--uc-menubar-height: 0px;
}
}
}
#navigator-toolbox:has(#PersonalToolbar[collapsed="true"]) {
--uc-bm-height: 0px;
}
@include Option("userChrome.navbar.as_sidebar") {
#navigator-toolbox:has(#PersonalToolbar[collapsed="false"]) #nav-bar {
--uc-bm-height: var(--uc-bm-height-default); // Re-calculate to force!!
}
@include Option("userChrome.autohide.bookmarkbar") {
#navigator-toolbox:has(#PersonalToolbar[collapsed="false"]):not(:hover) #nav-bar {
--uc-bm-height: 0px;
}
}
}
}
} }
@include Option("userChrome.autohide.tabbar", "userChrome.autohide.navbar", "userChrome.autohide.bookmarkbar", "userChrome.autohide.infobar") { @include Option("userChrome.autohide.tabbar", "userChrome.autohide.navbar", "userChrome.autohide.bookmarkbar", "userChrome.autohide.infobar") {
:root {
--uc-autohide-toolbar-delay: 600ms;
}
#navigator-toolbox { #navigator-toolbox {
position: relative; position: relative;
&:is(:hover, :focus-within) {
z-index: 2; z-index: 2;
#PersonalToolbar {
z-index: -1;
} }
#navigator-toolbox:not(:hover) { }
}
#navigator-toolbox:not(:hover):not(:focus-within) {
animation: 1s keepfront; animation: 1s keepfront;
} }
@keyframes keepfront { @keyframes keepfront {

View file

@ -12,7 +12,7 @@
@include Animate { @include Animate {
@include OneLiner { @include OneLiner {
#nav-bar { #nav-bar {
transition: margin-inline 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), transition: margin-inline var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
var(--ext-theme-background-transition) !important; var(--ext-theme-background-transition) !important;
} }
#nav-bar:is(:hover, :focus-within, [urlbar-exceeds-toolbar-bounds="true"]) { #nav-bar:is(:hover, :focus-within, [urlbar-exceeds-toolbar-bounds="true"]) {
@ -22,7 +22,7 @@
@include OneLinerNavbarContent { @include OneLinerNavbarContent {
#urlbar-container { #urlbar-container {
transition: min-width 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay); transition: min-width var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
} }
#nav-bar:is(:hover, :focus-within, [urlbar-exceeds-toolbar-bounds="true"]) #urlbar-container { #nav-bar:is(:hover, :focus-within, [urlbar-exceeds-toolbar-bounds="true"]) #urlbar-container {
transition-delay: 0s !important; transition-delay: 0s !important;

View file

@ -1,5 +1,5 @@
#forward-button[disabled="true"] { #forward-button[disabled="true"] {
margin-left: -36px !important; margin-left: var(--uc-toolbarbutton-hide-size) !important;
opacity: 0 !important; opacity: 0 !important;
pointer-events: none; pointer-events: none;
} }

View file

@ -1,3 +1,9 @@
@include Option("userChrome.autohide.back_button", "userChrome.autohide.forward_button") {
:root {
--uc-toolbarbutton-hide-size: calc(-1 * (16px + (2 * var(--toolbarbutton-outer-padding) + var(--toolbarbutton-inner-padding))));
}
}
@include Option("userChrome.autohide.back_button") { @include Option("userChrome.autohide.back_button") {
@import "back_button"; @import "back_button";
} }

View file

@ -1,6 +1,6 @@
#tab-notification-deck:not([customizing]) > .notificationbox-stack { #tab-notification-deck:not([customizing]) > .notificationbox-stack {
$infobarFixedHeight: 13px + ((1px + 5px) * 2); // button height + (button border + [button.small-button padding]) * 2 $infobarFixedHeight: 13px + ((1px + 5px) * 2); // button height + (button border + [button.small-button padding]) * 2
// fiexedHeight + (button margin * 2) + messagebar margin // fixedHeight + (button margin * 2) + messagebar margin
--infobar-height: calc(#{ $infobarFixedHeight } + (var(--infobar-button-vertical-margin, 4px) * 2) + var(--infobar-message-vertical-margin, 8px)); --infobar-height: calc(#{ $infobarFixedHeight } + (var(--infobar-button-vertical-margin, 4px) * 2) + var(--infobar-message-vertical-margin, 8px));
} }
#tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message { #tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message {
@ -22,8 +22,8 @@
@include Animate { @include Animate {
#tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message { #tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message {
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), transition: margin-bottom var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), opacity var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
var(--ext-theme-background-transition) !important; var(--ext-theme-background-transition) !important;
} }
#navigator-toolbox:is(:hover, :focus-within) #tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message { #navigator-toolbox:is(:hover, :focus-within) #tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message {

View file

@ -12,14 +12,14 @@
@include Animate { @include Animate {
#nav-bar:not([customizing]) { #nav-bar:not([customizing]) {
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), transition: margin-bottom var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), opacity var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
var(--ext-theme-background-transition) !important; var(--ext-theme-background-transition) !important;
@include Option("userChrome.autohide.fill_urlbar") { @include Option("userChrome.autohide.fill_urlbar") {
transition: margin-inline 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), transition: margin-inline var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), margin-bottom var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), opacity var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
var(--ext-theme-background-transition) !important; var(--ext-theme-background-transition) !important;
} }
} }

View file

@ -1,8 +1,11 @@
//-- Mixin --------------------------------------------------------------------- //-- Mixin ---------------------------------------------------------------------
@mixin _autohide_tabbar() { @mixin _autohide_tabbar() {
@include NotOption("userChrome.tabbar.on_bottom") { @include NotOption("userChrome.tabbar.on_bottom") {
&,
& .titlebar-buttonbox-container {
@content; @content;
} }
}
@include Option("userChrome.tabbar.on_bottom") { @include Option("userChrome.tabbar.on_bottom") {
> *:not(.titlebar-buttonbox-container) { > *:not(.titlebar-buttonbox-container) {
@content; @content;
@ -20,8 +23,8 @@
#TabsToolbar:not([customizing]) { #TabsToolbar:not([customizing]) {
@include _autohide_tabbar { @include _autohide_tabbar {
opacity: 0; opacity: 0;
will-change: opacity;
} }
will-change: opacity;
} }
#navigator-toolbox:is(:hover, :focus-within) { #navigator-toolbox:is(:hover, :focus-within) {
@ -38,13 +41,13 @@
@include Animate { @include Animate {
#titlebar:not([customizing]) { #titlebar:not([customizing]) {
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay), transition: margin-bottom var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
background-color 1s var(--animation-easing-function) !important; background-color 1s var(--animation-easing-function) !important;
} }
#TabsToolbar:not([customizing]) { #TabsToolbar:not([customizing]) {
@include _autohide_tabbar { @include _autohide_tabbar {
transition: opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay) !important; transition: opacity var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay) !important;
} }
} }

View file

@ -5,7 +5,7 @@
@include Animate { @include Animate {
@include Option("userChrome.decoration.animate") { @include Option("userChrome.decoration.animate") {
transition: margin-top 1s ease, transition: margin-top 1s ease,
margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay); margin-bottom var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
&:is(:hover, :focus-within) { &:is(:hover, :focus-within) {
transition-delay: 0s !important; transition-delay: 0s !important;
@ -13,11 +13,11 @@
&[inFullscreen="true"] { &[inFullscreen="true"] {
transition: margin-top 1.3s var(--animation-easing-function) 50ms, transition: margin-top 1.3s var(--animation-easing-function) 50ms,
margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay); margin-bottom var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
} }
} }
@include NotOption("userChrome.decoration.animate") { @include NotOption("userChrome.decoration.animate") {
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay); transition: margin-bottom var(--uc-autohide-toolbar-speed) var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
&:is(:hover, :focus-within) { &:is(:hover, :focus-within) {
transition-delay: 0s !important; transition-delay: 0s !important;

View file

@ -1,3 +1,4 @@
#sidebar-header,
#sidebar { #sidebar {
min-width: var(--uc-sidebar-width) !important; min-width: var(--uc-sidebar-width) !important;
max-width: var(--uc-sidebar-width) !important; max-width: var(--uc-sidebar-width) !important;
@ -5,10 +6,13 @@
will-change: min-width, max-width; will-change: min-width, max-width;
} }
#sidebar-box:is(:hover, :focus-within) > #sidebar { #sidebar-box:is(:hover, :focus-within) > {
#sidebar-header,
#sidebar {
min-width: var(--uc-sidebar-activate-width) !important; min-width: var(--uc-sidebar-activate-width) !important;
max-width: var(--uc-sidebar-activate-width) !important; max-width: var(--uc-sidebar-activate-width) !important;
} }
}
:root[inFullscreen="true"] #sidebar-box { :root[inFullscreen="true"] #sidebar-box {
margin-inline-start: var(--uc-sidebar-activate-width-reverse) !important; margin-inline-start: var(--uc-sidebar-activate-width-reverse) !important;
@ -29,16 +33,20 @@
} }
@include Animate { @include Animate {
#sidebar-header,
#sidebar { #sidebar {
transition: min-width 750ms var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important; transition: min-width var(--uc-autohide-sidebar-speed) var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important;
} }
#sidebar-box:is(:hover, :focus-within) > #sidebar { #sidebar-box:is(:hover, :focus-within) > {
#sidebar-header,
#sidebar {
transition-delay: 0ms !important; transition-delay: 0ms !important;
} }
}
:root[inFullscreen="true"] #sidebar-box { :root[inFullscreen="true"] #sidebar-box {
transition: padding-inline-start 1s var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important; transition: padding-inline-start var(--uc-autohide-fullscreen-sidebar-speed) var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important;
&:is(:hover, :focus-within) { &:is(:hover, :focus-within) {
transition-delay: 0ms !important; transition-delay: 0ms !important;

View file

@ -32,7 +32,7 @@
@include Animate { @include Animate {
#sidebar-box { #sidebar-box {
transition: min-width 750ms var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important; transition: min-width var(--uc-autohide-sidebar-speed) var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important;
&:is(:hover, :focus-within) { &:is(:hover, :focus-within) {
transition-delay: 0ms !important; transition-delay: 0ms !important;
@ -40,7 +40,7 @@
} }
:root[inFullscreen="true"] #sidebar-box { :root[inFullscreen="true"] #sidebar-box {
transition: margin-inline-start 1s var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important; transition: margin-inline-start var(--uc-autohide-fullscreen-sidebar-speed) var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important;
&[positionend="true"] { &[positionend="true"] {
transition-property: margin-inline-end !important; transition-property: margin-inline-end !important;

View file

@ -0,0 +1,3 @@
@include Option("userChrome.bookmarkbar.multi_row") {
@import "_multi_row";
}

View file

@ -0,0 +1,34 @@
// Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/multi-row_bookmarks.css made available under Mozilla Public License v. 2.0
// See the above repository for updates as well as full license text.
#PersonalToolbar {
--uc-multirow-bookmark-rows: 3;
--uc-multirow-bookmark-row-margin: 2px;
max-height: none !important;
}
#PlacesToolbar > hbox {
display: block;
width: 100vw;
}
#PlacesToolbarItems {
display: flex;
flex-wrap: wrap;
overflow-y: auto;
scroll-snap-type: y mandatory;
max-height: calc(var(--uc-multirow-bookmark-rows) *
(var(--uc-bm-height, calc(20px + (2 * var(--bookmark-block-padding, 4px)))) +
(2 * var(--uc-multirow-bookmark-row-margin)))) !important;
}
// Hide the all-bookmarks button
#PlacesChevron {
display: none;
}
// Add some spacing between rows
#PlacesToolbarItems > .bookmark-item {
scroll-snap-align: start;
margin-block: var(--uc-multirow-bookmark-row-margin) !important;
}

View file

@ -0,0 +1,143 @@
//-- Mixin ---------------------------------------------------------------------
@mixin _combined_nav_button_background() {
> .toolbarbutton-icon {
background-color: var(--uc-combined-circlebutton-background);
}
&:not([disabled], [open]):hover > .toolbarbutton-icon {
background-color: var(--uc-combined-circlebutton-hover-background) !important;
box-shadow: 0 1px 6px hsla(0,0%,0%,.1);
border-color: hsla(240,5%,5%,.35);
}
&[open] > .toolbarbutton-icon,
&:not([disabled]):hover:active > .toolbarbutton-icon {
background-color: var(--uc-combined-circlebutton-active-background) !important;
border-color: hsla(240,5%,5%,.40);
}
&[disabled="true"] {
> .toolbarbutton-icon {
background-color: color-mix(in srgb, var(--toolbarbutton-hover-background), var(--toolbar-field-background-color) 40%) !important;
fill: color-mix(in srgb, var(--toolbarbutton-icon-fill), transparent 60%);
}
}
}
@mixin _back_button_circle_shape() {
z-index: 3 !important;
background-color: var(--toolbar-bgcolor) !important;
background-clip: content-box !important;
border-radius: 100%;
padding-block: 0 !important;
@include NotOption("userChrome.autohide.back_button") {
padding-inline-end: 0 !important;
}
@include Option("userChrome.autohide.back_button") {
&:not([disabled="true"]) {
padding-inline-end: 0 !important;
}
&[disabled="true"] {
padding-inline-end: calc(var(--toolbarbutton-outer-padding) + 1px) !important;
}
}
> menupopup {
margin-top: -1px !important;
}
> .toolbarbutton-icon {
background-origin: padding-box;
background-clip: padding-box;
border: 1px solid var(--uc-combined-circlebutton-border-color);
border-radius: 10000px !important;
padding-inline-end: var(--urlbar-icon-padding) !important;
height: auto !important
}
}
//------------------------------------------------------------------------------
#nav-bar-customization-target > {
#forward-button {
--uc-forward-button-margin: calc(-1 * var(--uc-toolbarbutton-boundary) + 1px);
z-index: 2;
position: relative;
> .toolbarbutton-icon {
padding-inline-end: var(--urlbar-icon-padding) !important; /* Original: var(--toolbarbutton-inner-padding) */
padding-block: var(--urlbar-icon-padding) !important;
height: var(--uc-urlbar-icon-size) !important;
}
@include Option("userChrome.combined.urlbar.nav_button") {
padding-inline-end: 0px !important; /* Original: var(--toolbarbutton-outer-padding) */
}
@include NotOption("userChrome.combined.urlbar.nav_button") {
@include NotOption("userChrome.combined.nav_button.none_forward_background") {
@include Option("userChrome.combined.urlbar.home_button") {
@include NotOption("userChrome.combined.nav_button.home_button") {
@include _combined_nav_button_background;
@include NotOption("userChrome.autohide.forward_button") {
&[disabled="true"] {
opacity: 1 !important; /* Original: 0.4 */
}
}
}
}
@include NotOption("userChrome.combined.urlbar.home_button") {
@include _combined_nav_button_background;
@include NotOption("userChrome.autohide.forward_button") {
&[disabled="true"] {
opacity: 1 !important; /* Original: 0.4 */
}
}
}
}
}
@include NotOption("userChrome.autohide.forward_button") {
margin-inline-start: var(--uc-forward-button-margin) !important;
}
@include Option("userChrome.autohide.forward_button") {
&:not([disabled="true"]) {
margin-inline-start: var(--uc-forward-button-margin) !important;
}
}
}
#back-button {
position: relative;
@include _combined_nav_button_background;
@include NotOption("userChrome.autohide.back_button") {
&[disabled="true"] {
opacity: 1 !important; /* Original: 0.4 */
}
}
@include Option("userChrome.combined.nav_button.home_button", "userChrome.combined.urlbar.home_button") {
z-index: 2;
margin-inline-end: calc(-1 * var(--uc-toolbarbutton-boundary) - 1px) !important;
padding-inline-start: 0px !important; /* Original: var(--toolbarbutton-outer-padding) */
> .toolbarbutton-icon {
padding-inline-start: var(--urlbar-icon-padding) !important; /* Original: var(--toolbarbutton-inner-padding) */
padding-block: var(--urlbar-icon-padding) !important;
height: var(--uc-urlbar-icon-size) !important;
}
}
@include NotOption("userChrome.combined.nav_button.home_button") {
@include Option("userChrome.combined.urlbar.nav_button") {
@include NotOption("userChrome.combined.urlbar.home_button") {
@include _back_button_circle_shape;
}
}
@include NotOption("userChrome.combined.urlbar.nav_button") {
@include _back_button_circle_shape;
}
}
}
}

View file

@ -0,0 +1,31 @@
#nav-bar-customization-target > #home-button {
z-index: 3;
position: relative;
background-color: var(--toolbar-bgcolor) !important;
background-clip: content-box !important;
border-radius: 100%;
padding-block: 0 !important;
padding-inline-end: 0 !important;
> .toolbarbutton-icon {
background-color: var(--uc-combined-circlebutton-background);
background-origin: padding-box;
background-clip: padding-box;
border: 1px solid var(--uc-combined-circlebutton-border-color);
border-radius: 10000px !important;
padding-inline-end: var(--urlbar-icon-padding) !important;
height: auto !important
}
&:hover > .toolbarbutton-icon {
background-color: var(--uc-combined-circlebutton-hover-background) !important;
box-shadow: 0 1px 6px hsla(0,0%,0%,.1);
border-color: hsla(240,5%,5%,.35);
}
&:hover:active > .toolbarbutton-icon {
background-color: var(--uc-combined-circlebutton-active-background) !important;
border-color: hsla(240,5%,5%,.40);
}
}

114
src/combined/_index.scss Normal file
View file

@ -0,0 +1,114 @@
/*= Combined - At URL bar ====================================================*/
@include Option(
"userChrome.combined.nav_button", "userChrome.combined.nav_button.home_button",
"userChrome.combined.urlbar.nav_button", "userChrome.combined.urlbar.home_button", "userChrome.combined.urlbar.reload_button"
) {
// Init
#nav-bar {
// Color
--uc-combined-circlebutton-background: hsla(0,100%,100%,.5);
--uc-combined-circlebutton-hover-background: var(--uc-combined-circlebutton-background);
--uc-combined-circlebutton-active-background: var(--toolbarbutton-active-background);
--uc-combined-circlebutton-border-color: hsla(240,5%,5%,.3);
&[brighttext] {
// Original: Using :-moz-lwtheme
--uc-combined-circlebutton-background: var(--toolbarbutton-hover-background);
--uc-combined-circlebutton-hover-background: var(--toolbarbutton-active-background);
--uc-combined-circlebutton-active-background: color-mix(in srgb, currentColor 20%, transparent);
}
// Padding & Size
--uc-toolbarbutton-boundary: calc(var(--toolbarbutton-outer-padding) + var(--toolbarbutton-inner-padding));
--uc-toolbarbutton-padding: calc(2 * var(--uc-toolbarbutton-boundary));
--uc-toolbarbutton-size: calc(12px + var(--uc-toolbarbutton-padding));
--uc-toolbarbutton-halfsize: calc(6px + var(--uc-toolbarbutton-boundary));
--uc-urlbar-icon-size: calc(16px + 2 * var(--urlbar-icon-padding));
}
#nav-bar-customization-target > * {
-moz-box-ordinal-group: 1;
}
// Preserve
// `back` -> 2
// `home` -> 3
// `forward` -> 4
#nav-bar-customization-target > #urlbar-container {
-moz-box-ordinal-group: 5;
}
// `reload` -> 6
#nav-bar-customization-target > #urlbar-container ~ * {
-moz-box-ordinal-group: 7;
}
}
@include Option("userChrome.combined.urlbar.nav_button", "userChrome.combined.urlbar.home_button") {
#nav-bar-customization-target > #urlbar-container {
/* var(--urlbar-margin-inline) */
margin-inline-start: calc(-1 * var(--uc-urlbar-combined-margin, 0px)) !important;
> #urlbar:not([breakout][breakout-extend]) {
padding-left: var(--uc-urlbar-combined-margin, 0px);
}
@include Option("userChrome.combined.urlbar.nav_button") {
--uc-urlbar-combined-margin: var(--uc-toolbarbutton-size);
}
@include NotOption("userChrome.combined.urlbar.nav_button") {
--uc-urlbar-combined-margin: var(--uc-toolbarbutton-halfsize);
@include Option("userChrome.combined.nav_button") {
@include Option("userChrome.combined.nav_button.home_button") {
@include Option("userChrome.combined.urlbar.home_button") {
--uc-urlbar-combined-margin: var(--uc-toolbarbutton-size);
}
}
}
}
}
#nav-bar-customization-target > #forward-button[disabled="true"] ~ #urlbar-container > #urlbar {
@include Option("userChrome.combined.urlbar.nav_button") {
@include Option("userChrome.autohide.forward_button") {
&:not([breakout][breakout-extend]) {
padding-left: calc(var(--uc-urlbar-combined-margin, 0px) - var(--urlbar-icon-padding));
}
}
@include Animate {
transition-property: margin-left, padding-left;
transition-duration: 0.5s;
transition-timing-function: var(--animation-easing-function);
}
}
}
}
@include Option("userChrome.combined.nav_button", "userChrome.combined.urlbar.nav_button") {
@import "back_forward_button";
}
@include Option("userChrome.combined.nav_button") {
@include Option("userChrome.combined.nav_button.home_button") {
@import "home_button";
}
}
@include Option("userChrome.combined.urlbar.nav_button") {
#nav-bar-customization-target > #back-button {
-moz-box-ordinal-group: 2;
}
#nav-bar-customization-target > #forward-button {
-moz-box-ordinal-group: 4;
}
}
@include Option("userChrome.combined.urlbar.home_button") {
#nav-bar-customization-target > #home-button {
-moz-box-ordinal-group: 3;
}
@import "home_button";
}
@include Option("userChrome.combined.urlbar.reload_button") {
#nav-bar-customization-target > #stop-reload-button {
-moz-box-ordinal-group: 6;
}
@import "reload_button";
}

View file

@ -0,0 +1,22 @@
// Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/reload_button_in_urlbar.css made available under Mozilla Public License v. 2.0
// See the above repository for updates as well as full license text.
#urlbar {
padding-right: calc(var(--uc-toolbarbutton-size) - (var(--urlbar-margin-inline) / 2));
}
#nav-bar-customization-target > #stop-reload-button {
z-index: 3;
position: relative;
--toolbarbutton-hover-background: var(--urlbar-box-hover-bgcolor);
color: var(--urlbar-box-hover-text-color) !important;
margin-left: calc( -1 * (var(--uc-toolbarbutton-size) + var(--urlbar-margin-inline)));
}
#nav-bar-customization-target > #stop-reload-button > .toolbarbutton-1 > .toolbarbutton-icon {
width: var(--uc-urlbar-icon-size) !important;
height: var(--uc-urlbar-icon-size) !important;
padding: var(--urlbar-icon-padding) !important;
}

View file

@ -131,7 +131,7 @@
} }
/*= Linux - Titlebar button at lwtheme =====================================*/ /*= Linux - Titlebar button at lwtheme =====================================*/
@include NotOption("userChrome.compatiblity.os.linux_non_native_titlebar_button") { @include NotOption("userChrome.compatibility.os.linux_non_native_titlebar_button") {
.titlebar-button:-moz-lwtheme { .titlebar-button:-moz-lwtheme {
appearance: auto !important; appearance: auto !important;
} }
@ -183,14 +183,28 @@ $_os_linuxDefaultShadow: 0 0 4px rgba(128, 128, 142, 0.5);
} }
/*= Titlebar Container Size at maximized #384 ================================*/ /*= Titlebar Container Size at maximized #384 ================================*/
@include Option("userChrome.compatibility.os.windows_maximized") {
@include OS($win) { @include OS($win) {
:root[tabsintitlebar][sizemode="maximized"] #titlebar { :root[tabsintitlebar] {
@include NotOption("userChrome.compatibility.os.windows_maximized") {
#titlebar {
// Prevent #476 FF v105 above
/* -moz-default-appearance: -moz-window-titlebar */ /* -moz-default-appearance: -moz-window-titlebar */
appearance: none !important; appearance: none !important;
}
@include OS($win7, $win8) {
&[sizemode="maximized"] #titlebar {
// Only win7, win8 #480
padding-top: 8px; // Don't use margin-top for reserved fullscreen animation
}
}
}
@include Option("userChrome.compatibility.os.windows_maximized") {
&[sizemode="maximized"] #titlebar {
appearance: none !important;
// Prevent side effect #370 // Prevent side effect #370
padding-top: 8px; // Don't use margin-top for reserved fullscreen animation padding-top: 8px; // Don't use margin-top for reserved fullscreen animation
} }
} }
} }
}

View file

@ -48,7 +48,7 @@ menu {
/*= Remove Tab Border ========================================================*/ /*= Remove Tab Border ========================================================*/
@mixin _theme_removeTabBorder($options...) { @mixin _theme_removeTabBorder($options...) {
%noneBorder { %noneBorder {
/* Nigtly 96: 1px solid var(--tab-line-color, rgba(128,128,142,0.9)); */ /* Nightly 96: 1px solid var(--tab-line-color, rgba(128,128,142,0.9)); */
border: unset !important; border: unset !important;
} }
@each $prefix, $postfix in $options { @each $prefix, $postfix in $options {
@ -82,6 +82,13 @@ menu {
} }
} }
/*= Tab Separator Color ======================================================*/
#TabsToolbar,
#nav-bar {
--toolbarseparator-color: color-mix(in srgb, currentColor 20%, transparent); /* 60% at v105 */
}
/*= Light Weight Theme =======================================================*/ /*= Light Weight Theme =======================================================*/
/* Header Image */ /* Header Image */
:root[lwtheme-image] { :root[lwtheme-image] {
@ -109,11 +116,65 @@ menu {
/* Navbar Border */ /* Navbar Border */
#navigator-toolbox:-moz-lwtheme { #navigator-toolbox:-moz-lwtheme {
--tabs-border-color: rgba(0, 0, 0, 0.3); /* Legacy: v96 */ --tabs-border-color: rgba(0, 0, 0, 0.4); /* Legacy: v96, (0, 0, 0, 0.3) -> (0, 0, 0, 0.4) */
--lwt-tabs-border-color: rgba(0, 0, 0, 0.3); --lwt-tabs-border-color: rgba(0, 0, 0, 0.4);
} }
/*= Findbar Border Color =====================================================*/ /*= Findbar Border Color =====================================================*/
html|input.findbar-textbox { html|input.findbar-textbox {
border: 1px solid var(--input-border-color, var(--toolbar-field-border-color, ThreeDShadow)) !important; /* Original: 1px solid var(--input-border-color, var(--toolbar-field-border-color)) */ border: 1px solid var(--input-border-color, var(--toolbar-field-border-color, ThreeDShadow)) !important; /* Original: 1px solid var(--input-border-color, var(--toolbar-field-border-color)) */
} }
/*= Drop Indicator Color #473 ================================================*/
treechildren::-moz-tree-cell-text(primary, dropOn),
treechildren::-moz-tree-drop-feedback,
vbox[part="drop-indicator-bar"] > image[part="drop-indicator"] {
background-color: var(--button-primary-bgcolor, var(--focus-outline-color)) !important; /* Original: SelectedItem or AccentColor*/
}
#bookmarksPanel[lwt-sidebar="true"] {
--focus-outline-color: var(--in-content-focus-outline-color, AccentColor) !important;
}
/*= Menu color #477 ==========================================================*/
@media (-moz-windows-non-native-menus) {
:root {
/* Override some menu color variables for light browser themes. */
--menuitem-hover-background-color: #e0e0e6;
--menu-background-color: #f9f9fb;
--menu-color: #15141a;
--menuitem-disabled-hover-background-color: rgba(224, 224, 230, 0.4);
--menu-disabled-color: rgba(21, 20, 26, 0.4);
--menu-border-color: #cfcfd8;
--menu-icon-opacity: 0.7;
/* Declare menu colors for dark themes, but don't override anything yet. */
--dark-menuitem-hover-background-color: #52525e;
--dark-menu-background-color: #2b2a33;
--dark-menu-color: #fbfbfe;
--dark-menuitem-disabled-hover-background-color: rgba(82, 82, 94, 0.4);
--dark-menu-disabled-color: rgba(251, 251, 254, 0.4);
--dark-menu-border-color: #5b5b66;
--dark-menu-icon-opacity: 1;
}
/* Override the menu color variables for dark browser themes. */
@include Dark {
:root {
--menuitem-hover-background-color: var(--dark-menuitem-hover-background-color);
--menu-background-color: var(--dark-menu-background-color);
--menu-color: var(--dark-menu-color);
--menuitem-disabled-hover-background-color: var(--dark-menuitem-disabled-hover-background-color);
--menu-disabled-color: var(--dark-menu-disabled-color);
--menu-border-color: var(--dark-menu-border-color);
--menu-icon-opacity: var(--dark-menu-icon-opacity);
}
}
}
/*= Firefox View Border #498 =================================================*/
:root:not([privatebrowsingmode=temporary])[firefoxviewhidden] #firefox-view-button + #tabbrowser-tabs {
border-inline-start: none !important;
padding-inline-start: var(--tab-overflow-pinned-tabs-width) !important;
margin-inline-start: 0 !important;
}

View file

@ -101,7 +101,7 @@
} }
/** Activity Stream - Home Search Bar looks like proton *********************/ /** Activity Stream - Home Search Bar looks like proton *********************/
@include Option("userContent.newTab.animate") { @include Option("userContent.newTab.searchbar") {
/* Dropdown Colors */ /* Dropdown Colors */
#root { #root {
--newtab-search-background-color: rgba(255, 255, 255, 1); /* Same as light theme's --panel-background */ --newtab-search-background-color: rgba(255, 255, 255, 1); /* Same as light theme's --panel-background */

View file

@ -4,11 +4,13 @@
{ {
/* Illustrations Position */ /* Illustrations Position */
#errorPageContainer, #errorPageContainer,
.neterror > .container,
.description-wrapper { .description-wrapper {
min-height: 300px; min-height: 300px;
background-position: left center; background-position: left center;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 38%; background-size: 38%;
background-image: var(--uc-error-llustration);
} }
#errorPageContainer { #errorPageContainer {
@ -34,43 +36,40 @@
//-- Mixin --------------------------------------------------------------------- //-- Mixin ---------------------------------------------------------------------
@mixin _backgroundImage($imgURL, $important: false) {
background-image: url($imgURL) if($important, !important, null);
@content;
}
@mixin _errorContainerImage($imgURL) { @mixin _errorContainerImage($imgURL) {
#errorPageContainer { :root {
@include _backgroundImage($imgURL) { --uc-error-llustration: url(#{$imgURL});
@content;
} }
#errorPageContainer,
.neterror > .container {
@content;
} }
} }
@mixin _errorDescriptionImage($imgURL) { @mixin _errorDescriptionImage($imgURL) {
.description-wrapper { :root {
@include _backgroundImage($imgURL) { --uc-error-llustration: url(#{$imgURL});
@content;
} }
.description-wrapper {
@content;
} }
} }
@mixin _errorTitleImage($imgURL) { @mixin _errorTitleImage($imgURL) {
@media (min-width: 970px) { @media (min-width: 970px) {
.title { .title {
@include _backgroundImage($imgURL, true) { background-image: url($imgURL) !important;
@content; @content;
} }
} }
} }
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@-moz-document url-prefix("about:neterror?e=connectionFailure"), @-moz-document url-prefix("about:neterror?e=connectionFailure"),
url-prefix("about:neterror?e=netInterrupt"), url-prefix("about:neterror?e=netInterrupt"),
url-prefix("about:neterror?e=netTimeout"),
url-prefix("about:neterror?e=netReset"), url-prefix("about:neterror?e=netReset"),
url-prefix("about:neterror?e=netTimeout"),
url-prefix("about:neterror?e=netOffline"), url-prefix("about:neterror?e=netOffline"),
url("about:restartrequired"), url("chrome://browser/content/aboutRestartRequired.xhtml") url("about:restartrequired"), url("chrome://browser/content/aboutRestartRequired.xhtml")
{ {
@ -79,7 +78,9 @@
@-moz-document url-prefix("about:neterror?e=dnsNotFound") { @-moz-document url-prefix("about:neterror?e=dnsNotFound") {
@include _errorContainerImage("../icons/error-server-not-found.svg"); @include _errorContainerImage("../icons/error-server-not-found.svg");
} }
@-moz-document url-prefix("about:neterror?e=malformedURI") { @-moz-document url-prefix("about:neterror?e=blockedByPolicy"),
url-prefix("about:neterror?e=deniedPortAccess"),
url-prefix("about:neterror?e=malformedURI") {
@include _errorContainerImage("chrome://browser/skin/illustrations/error-malformed-url.svg"); @include _errorContainerImage("chrome://browser/skin/illustrations/error-malformed-url.svg");
} }
@-moz-document url-prefix("about:neterror?e=clockSkewError"), @-moz-document url-prefix("about:neterror?e=clockSkewError"),

View file

@ -19,12 +19,13 @@
@include Option("userContent.page.proton_color.system_accent") { @include Option("userContent.page.proton_color.system_accent") {
:host, :root { :host, :root {
@include AccentColor { @include AccentColor("Highlight") {
--in-content-primary-button-text-color: #{$accentTextColor} !important; --in-content-primary-button-text-color: #{$accentTextColor} !important;
}
--in-content-primary-button-background: Highlight !important; --in-content-primary-button-background: #{$accentColor} !important;
--in-content-primary-button-background-hover: color-mix(in srgb, black 10%, Highlight) !important; --in-content-primary-button-background-hover: color-mix(in srgb, black 10%, #{$accentColor}) !important;
--in-content-primary-button-background-active: color-mix(in srgb, black 20%, Highlight) !important; --in-content-primary-button-background-active: color-mix(in srgb, black 20%, #{$accentColor}) !important;
}
} }
} }
} }

View file

@ -46,6 +46,7 @@
.input-row input[type="tel"], .input-row input[type="tel"],
.input-row input[type="text"], .input-row input[type="text"],
.input-row input::placeholder, .input-row input::placeholder,
.input-text,
.firefox-family-services > ul > .firefox-service, .firefox-family-services > ul > .firefox-service,
.faint, .faint,
.faint a, .faint a,
@ -68,7 +69,9 @@
.input-row input[type="password"], .input-row input[type="password"],
.input-row input[type="tel"], .input-row input[type="tel"],
.input-row input[type="text"], .input-row input[type="text"],
.input-text,
header, header,
.card,
.bg-white:not(nav) { .bg-white:not(nav) {
background: var(--in-content-box-background) !important; background: var(--in-content-box-background) !important;
} }

View file

@ -486,7 +486,7 @@
background: var(--in-content-border-color) !important; background: var(--in-content-border-color) !important;
} }
/* Othres */ /* Others */
#promos .view-button a, #promos .view-button a,
#upload-file-finish.button, #upload-file-finish.button,
#upload-file-widget .button.prominent, #upload-file-widget .button.prominent,

View file

@ -191,13 +191,13 @@
richlistbox:focus-visible { richlistbox:focus-visible {
border-color: transparent !important; border-color: transparent !important;
outline: 2px solid var(--in-content-focus-outline-color) !important; outline: 2px solid var(--in-content-focus-outline-color) !important;
outline-offset: -1px !important; /* Prevents antialising around the corners */ outline-offset: -1px !important; /* Prevents antialiasing around the corners */
} }
input:is([type="email"], [type="tel"], [type="text"], [type="password"], [type="url"], [type="number"]):-moz-ui-invalid, input:is([type="email"], [type="tel"], [type="text"], [type="password"], [type="url"], [type="number"]):-moz-ui-invalid,
textarea:-moz-ui-invalid { textarea:-moz-ui-invalid {
border-color: transparent !important; border-color: transparent !important;
outline: 2px solid var(--in-content-border-invalid) !important; outline: 2px solid var(--in-content-border-invalid) !important;
outline-offset: -1px !important; /* Prevents antialising around the corners */ outline-offset: -1px !important; /* Prevents antialiasing around the corners */
} }
input:is([type="email"], [type="tel"], [type="text"], [type="password"], [type="url"], [type="number"]):disabled, input:is([type="email"], [type="tel"], [type="text"], [type="password"], [type="url"], [type="number"]):disabled,
textarea:disabled, textarea:disabled,

View file

@ -0,0 +1,17 @@
menupopup[placespopup="true"] > menu.bookmark-item > .menu-right {
counter-reset: bookmark-counts 0;
}
menupopup[placespopup="true"] > menu.bookmark-item::after {
display: -moz-inline-box;
content: "(" counter(bookmark-counts) ")";
}
menupopup[placespopup="true"] > menu.bookmark-item > .menu-iconic-highlightable-text,
menupopup[placespopup="true"] > menu.bookmark-item > .menu-accel-container,
menupopup[placespopup="true"] > menu.bookmark-item > .menu-right {
-moz-box-ordinal-group: 2;
}
menu.bookmark-item > menupopup[placespopup="true"] > .bookmark-item {
counter-increment: bookmark-counts;
}

Some files were not shown because too many files have changed in this diff Show more