Formatted the project

This commit is contained in:
mr. m 2025-03-07 23:35:24 +00:00
parent 41e24452ab
commit 6a232aafbd
52 changed files with 117210 additions and 111887 deletions

View file

@ -1,6 +1 @@
[
"obsidian-style-settings",
"emoji-shortcodes",
"callout-manager",
"obsidian-emoji-toolbar"
]
["obsidian-style-settings", "emoji-shortcodes", "callout-manager", "obsidian-emoji-toolbar"]

View file

@ -1,10 +1,7 @@
{
"callout-manager:manage-callouts": [
{
"modifiers": [
"Mod",
"Shift"
],
"modifiers": ["Mod", "Shift"],
"key": "C"
}
]

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -56,13 +56,15 @@ img.emoji {
text-align: center;
padding: 12px 4px !important;
overflow: hidden;
transition: color .1s ease-out;
transition: color 0.1s ease-out;
margin: 0 !important;
box-shadow: none !important;
background: none !important;
border: none !important;
}
.emoji-mart-anchor:focus { outline: 0 }
.emoji-mart-anchor:focus {
outline: 0;
}
.emoji-mart-anchor:hover,
.emoji-mart-anchor:focus,
.emoji-mart-anchor-selected {
@ -75,8 +77,10 @@ img.emoji {
.emoji-mart-anchor-bar {
position: absolute;
bottom: -3px; left: 0;
width: 100%; height: 3px;
bottom: -3px;
left: 0;
width: 100%;
height: 3px;
background-color: #464646;
}
@ -145,15 +149,19 @@ img.emoji {
cursor: default;
}
.emoji-mart-category .emoji-mart-emoji:focus { outline: 0 }
.emoji-mart-category .emoji-mart-emoji:focus {
outline: 0;
}
.emoji-mart-category .emoji-mart-emoji:hover:before,
.emoji-mart-category .emoji-mart-emoji:focus:before {
z-index: 0;
content: "";
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #c5c5c5;
border-radius: 100%;
}
@ -172,7 +180,7 @@ img.emoji {
font-weight: 500;
padding: 5px 6px;
background-color: #fff;
background-color: rgba(255, 255, 255, .95);
background-color: rgba(255, 255, 255, 0.95);
}
.emoji-mart-category-list {
@ -198,7 +206,9 @@ img.emoji {
}
.emoji-mart-emoji-native {
font-family: "Segoe UI Emoji", "Segoe UI Symbol", "Segoe UI", "Apple Color Emoji", "Twemoji Mozilla", "Noto Color Emoji", "Android Emoji";
font-family:
"Segoe UI Emoji", "Segoe UI Symbol", "Segoe UI", "Apple Color Emoji", "Twemoji Mozilla",
"Noto Color Emoji", "Android Emoji";
}
.emoji-mart-no-results {
@ -217,7 +227,7 @@ img.emoji {
display: none;
}
.emoji-mart-no-results .emoji-mart-no-results-label {
margin-top: .2em;
margin-top: 0.2em;
}
.emoji-mart-no-results .emoji-mart-emoji:hover:before {
content: none;
@ -241,7 +251,8 @@ img.emoji {
}
.emoji-mart-preview-data {
left: 68px; right: 12px;
left: 68px;
right: 12px;
word-break: break-all;
}
@ -266,7 +277,7 @@ img.emoji {
.emoji-mart-preview-shortname + .emoji-mart-preview-shortname,
.emoji-mart-preview-shortname + .emoji-mart-preview-emoticon,
.emoji-mart-preview-emoticon + .emoji-mart-preview-emoticon {
margin-left: .5em;
margin-left: 0.5em;
}
.emoji-mart-preview-emoticon {
@ -284,7 +295,7 @@ img.emoji {
}
.emoji-mart-title-label {
color: #999A9C;
color: #999a9c;
font-size: 26px;
font-weight: 300;
}
@ -309,7 +320,7 @@ img.emoji {
}
.emoji-mart-skin-swatches.opened .emoji-mart-skin-swatch.selected:after {
opacity: .75;
opacity: 0.75;
}
.emoji-mart-skin-swatch {
@ -317,16 +328,28 @@ img.emoji {
width: 0;
vertical-align: middle;
transition-property: width, padding;
transition-duration: .125s;
transition-duration: 0.125s;
transition-timing-function: ease-out;
}
.emoji-mart-skin-swatch:nth-child(1) { transition-delay: 0s }
.emoji-mart-skin-swatch:nth-child(2) { transition-delay: .03s }
.emoji-mart-skin-swatch:nth-child(3) { transition-delay: .06s }
.emoji-mart-skin-swatch:nth-child(4) { transition-delay: .09s }
.emoji-mart-skin-swatch:nth-child(5) { transition-delay: .12s }
.emoji-mart-skin-swatch:nth-child(6) { transition-delay: .15s }
.emoji-mart-skin-swatch:nth-child(1) {
transition-delay: 0s;
}
.emoji-mart-skin-swatch:nth-child(2) {
transition-delay: 0.03s;
}
.emoji-mart-skin-swatch:nth-child(3) {
transition-delay: 0.06s;
}
.emoji-mart-skin-swatch:nth-child(4) {
transition-delay: 0.09s;
}
.emoji-mart-skin-swatch:nth-child(5) {
transition-delay: 0.12s;
}
.emoji-mart-skin-swatch:nth-child(6) {
transition-delay: 0.15s;
}
.emoji-mart-skin-swatch.selected {
position: relative;
@ -337,14 +360,16 @@ img.emoji {
.emoji-mart-skin-swatch.selected:after {
content: "";
position: absolute;
top: 50%; left: 50%;
width: 4px; height: 4px;
top: 50%;
left: 50%;
width: 4px;
height: 4px;
margin: -2px 0 0 -2px;
background-color: #fff;
border-radius: 100%;
pointer-events: none;
opacity: 0;
transition: opacity .2s ease-out;
transition: opacity 0.2s ease-out;
}
.emoji-mart-skin-swatch.custom {
@ -354,7 +379,7 @@ img.emoji {
overflow: hidden;
vertical-align: middle;
transition-property: width, height;
transition-duration: .125s;
transition-duration: 0.125s;
transition-timing-function: ease-out;
cursor: default;
}
@ -384,7 +409,7 @@ img.emoji {
}
.emoji-mart-skin-swatches.custom.opened .emoji-mart-skin-swatch.custom.selected:after {
opacity: .75;
opacity: 0.75;
}
.emoji-mart-skin-text.opened {
@ -408,12 +433,24 @@ img.emoji {
border-radius: 100%;
}
.emoji-mart-skin-tone-1 { background-color: #ffc93a }
.emoji-mart-skin-tone-2 { background-color: #fadcbc }
.emoji-mart-skin-tone-3 { background-color: #e0bb95 }
.emoji-mart-skin-tone-4 { background-color: #bf8f68 }
.emoji-mart-skin-tone-5 { background-color: #9b643d }
.emoji-mart-skin-tone-6 { background-color: #594539 }
.emoji-mart-skin-tone-1 {
background-color: #ffc93a;
}
.emoji-mart-skin-tone-2 {
background-color: #fadcbc;
}
.emoji-mart-skin-tone-3 {
background-color: #e0bb95;
}
.emoji-mart-skin-tone-4 {
background-color: #bf8f68;
}
.emoji-mart-skin-tone-5 {
background-color: #9b643d;
}
.emoji-mart-skin-tone-6 {
background-color: #594539;
}
/* For screenreaders only, via https://stackoverflow.com/a/19758620 */
.emoji-mart-sr-only {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -4,8 +4,9 @@ lastmod: 2024-10-15
---
These benchmarks were performed on a device with the following specifications:
* Windows 11
* Intel® Core i5-13600K Processor
- Windows 11
- Intel® Core i5-13600K Processor
> [!warning]
> These benchmarks only focus on specific performance aspects of a browser, and your personal results may vary drastically depending on your hardware.
@ -19,7 +20,7 @@ These benchmarks were performed on a device with the following specifications:
### [Speedometer 3.0](https://browserbench.org/Speedometer3.0/)
| Version | Score |
|-----------|-----|
| ------------------- | ----- |
| 1.0.1-a.10-opt | 25.4 |
| 1.0.1-a.4-opt | 25.6 |
| 1.0.1-a.2-opt | 25.4 |
@ -48,7 +49,7 @@ xychart-beta
### [JetStream 2.2](https://browserbench.org/JetStream/)
| Version | Score |
|-----------|-----|
| -------------- | ----- |
| 1.0.1-a.4-opt | 240 |
| 1.0.1-a.2-opt | 237 |
| 1.0.0-a.39-opt | 238 |
@ -67,7 +68,7 @@ xychart-beta
### [MotionMark](https://browserbench.org/MotionMark1.3.1/)
| Version | Score |
|-----------|-----|
| -------------- | ----- |
| 1.0.1-a.4-opt | 1515 |
| 1.0.1-a.2-opt | 1527 |
| 1.0.0-a.39-opt | 1538 |
@ -83,7 +84,6 @@ xychart-beta
line [1464,1562,1538,1527,1515]
```
<style>
/* Add spacing between each details section */
details {
@ -109,7 +109,7 @@ details > summary + * {
## [Basemark Web 3.0](https://web.basemark.com/)
| Version | Score | CSS | HTML5 | Page Responsiveness |
|-----------|-----|-----|-------|------------------------------|
| ------------------ | ------- | ------ | ------ | ------------------- | --- |
| 1.0.0-a.X | --- | --- | --- | --- | --- |
| 1.0.0-a.34-opt | 1920 | 59% | 91% | 91% | 76% |
| 1.0.0-a.33-opt | 1957 | 59% | 91% | 91% | 76% |
@ -128,7 +128,6 @@ details > summary + * {
| Librewolf 128.0-2 | 1953.65 | 59.66% | 89.01% | 91.72% |
| FF nightly 130.0a1 | 1912.77 | 59.66% | 90.91% | 91.72% |
```mermaid
xychart-beta
title "Performance over time (Higher is better)"
@ -139,5 +138,3 @@ xychart-beta
```
</details>

View file

@ -3,6 +3,7 @@ title: Code of Conduct
draft: false
lastmod: 2024-08-24
---
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
@ -48,18 +49,22 @@ All community leaders are obligated to respect the privacy and security of the r
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of actions.
**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the community.

View file

@ -32,6 +32,7 @@ If you find a bug, please open an issue and describe the problem in detail. Incl
> [!important]
> Open the issue in it's corresponding GitHub repository:
>
> - [Desktop Browser App](https://github.com/zen-browser/desktop/issues)
> - [Zen's Custom Mods](https://github.com/zen-browser/theme-store)
> - [Zen's Homepage Website](https://github.com/zen-browser/www)
@ -42,7 +43,7 @@ If you find a bug, please open an issue and describe the problem in detail. Incl
![[discuss.png]]
We welcome suggestions for new features or improvements to existing ones. To suggest a feature, please start a new Github discussion in the Ideas category.
*Use the correct Github Repository based on the list above*
_Use the correct Github Repository based on the list above_
---

View file

@ -4,7 +4,6 @@ draft: false
lastmod: 2024-08-26
---
This guide will help you get started with contributing to the documentation for Zen Browser. The documentation is crucial for helping users and developers understand and use the project effectively. We use Quartz v4 for generating the static documentation site, and we recommend using Obsidian as your Markdown editor for making contributions.
## Prerequisites
@ -14,7 +13,7 @@ Before you begin, ensure you have the following tools installed:
- [**Git**](https://git-scm.com/): Version control system to clone the repository and manage your code.
- [**Node.js**](https://nodejs.org/): Required for building the Quartz v4 site.
- [**npm**](https://www.npmjs.com/): Node package manager, which comes with Node.js.
- [**Obsidian**](https://obsidian.md/): A powerful Markdown editor recommended for editing and organizing documentation. *(Optional)*
- [**Obsidian**](https://obsidian.md/): A powerful Markdown editor recommended for editing and organizing documentation. _(Optional)_
## 1. Fork the Repository

View file

@ -4,13 +4,11 @@ draft: false
lastmod: 2024-08-24
---
Thank you for your interest in contributing to the translations for Zen Browser! Ensuring that Zen Browser is accessible to users around the world is a key priority, and your contributions help make this possible. This guide will walk you through the process of getting started with translating Zen Browser using Crowdin.
> [!note]
> If you want to translate a language that is not currently available in the Crowdin project, please reach out to the developers on Discord. Well be happy to add it for you!
## Prerequisites
Before you begin, you will need to have the following:

View file

@ -4,7 +4,6 @@ draft: false
lastmod: 2024-08-24
---
This guide will walk you through the steps required to set up and contribute to the development of Zen Browser's homepage. Whether you're fixing bugs, adding new features, or enhancing the design, this guide will help you get started.
## Prerequisites
@ -108,7 +107,6 @@ Your pull request will be reviewed by the maintainers, and you may be asked to m
- [[CONTRIBUTING| Contribution Guidelines]]
- [[CODE_OF_CONDUCT | Code of Conduct]]
---
Thank you for contributing to Zen Browser's homepage! Your contributions help make the project better for everyone.

View file

@ -2,15 +2,19 @@
title: Frequently Asked Questions ❓
lastmod: 2025-01-10
---
Welcome to the Zen Browser FAQ section! Here, you'll find answers to common questions and helpful tips to enhance your experience with Zen Browser. If your question isn't covered here, feel free to explore our community forums [r/zen_browser](https://www.reddit.com/r/zen_browser) or reach out to the support team.
## How can I use horizontal tabs?
Zen Browser will not support horizontal tabs in the near future. The decision to focus on **Vertical Tabs** is a core design choice, with the entire Zen Browser experience built around this concept. This approach is intended to maximize screen space and improve navigation, making vertical tabs an essential part of Zen's philosophy.
## Will there be mobile version for Zen Browser?
At the moment, our team does not have the time or resources to develop Android or iOS versions of Zen Browser. Additionally, we believe that Zens unique features, particularly its design around vertical tabs, do not translate well to the mobile form factor. As such, we do not currently have plans to develop a mobile version of Zen Browser.
## Why can't Zen Browser play DRM-protected content?
> [!important] This only affects Microsoft Windows and MacOS
> [!question]- What is DRM?
@ -23,6 +27,7 @@ Feel free to support the funding of a Widevine license for Zen on [Ko-Fi](https:
> [!question]- Which Services Are Affected?
> Due to the lack of DRM support, you will not be able to stream content from the following services in Zen Browser:
>
> - **HBO Max**
> - **Netflix**
> - **Spotify**
@ -33,8 +38,9 @@ Feel free to support the funding of a Widevine license for Zen on [Ko-Fi](https:
> - **And possible other services that use DRM not listed here**
> [!info] Alternative solutions
> * Use a browser that has a Widevine license, such as [**Mozilla Firefox**](https://www.mozilla.org/firefox/), when streaming DRM-protected content.
> * Use the native desktop app for the service you want to use
>
> - Use a browser that has a Widevine license, such as [**Mozilla Firefox**](https://www.mozilla.org/firefox/), when streaming DRM-protected content.
> - Use the native desktop app for the service you want to use
## How do I know Zen is safe?
@ -58,6 +64,7 @@ Your support helps the team maintain and enhance Zen Browser for everyone!
3. Change the view mode by pressing the `[|]` button in the top address bar
## How to switch tabs by scrolling?
You can enable this feature by changing a setting in the browser's configuration. Here's how:
1. Open the `about:config` page. This page contains advanced settings for the browser.
@ -94,6 +101,7 @@ After signing in and selecting your preferences, your data will be synced across
## How do I use RTX Video Super Resolution?
To enable Zen Browser to use the feature
1. **Open 'about:config'**
2. **Search for 'gfx.webrender.dcomp-video-hw-overlay-win-force-enabled'**
3. **Double click the flag to toggle it to 'true'**
@ -104,8 +112,8 @@ Refer to [Nvidia's RTX Video FAQ](https://nvidia.custhelp.com/app/answers/detail
## Transparency bug
Some users encounter the bug where websites are partialy transparent, to resolve it follow bellow:
1. **Url `about:config`**
2. Search for `browser.tabs.allow_transparent_browser`
3. Set the flag to `false`
4. **Restart the browser**

View file

@ -19,17 +19,20 @@ Since Zen Browser is still under development and [under the usage threshold](htt
## Workarounds
That being said, there are workaround methods to add Zen Browser to this *Trusted Browsers* list for **Linux** and **MacOS**.
That being said, there are workaround methods to add Zen Browser to this _Trusted Browsers_ list for **Linux** and **MacOS**.
### Linux
You can create a *Custom Allowed Browsers* file that 1Password will use to allow Zen Browser -- or other non-officially supported browser-- to integrate with 1Password's desktop app.
You can create a _Custom Allowed Browsers_ file that 1Password will use to allow Zen Browser -- or other non-officially supported browser-- to integrate with 1Password's desktop app.
#### 1. Create 1Password's config directory
```bash
sudo mkdir /etc/1password
```
#### 2. Create the Custom Allowed Browsers file
```bash
sudo touch /etc/1password/custom_allowed_browsers
```
@ -41,14 +44,18 @@ echo "zen-bin" | sudo tee -a /etc/1password/custom_allowed_browsers
```
---
Special thanks to [u/xmansyx](https://www.reddit.com/user/xmansyx/) and [u/feelspeaceman](https://www.reddit.com/user/feelspeaceman/)
Sources:
- [1Password Integration fix (Linux) - Reddit](https://www.reddit.com/r/zen_browser/comments/1gcm33v/1password_integration_fix_linux/)
- [1Password Extension fix for other Browsers on Linux - edb tools!](https://edb.tools/posts/1password-extension-fix/)
---
### MacOS
In MacOS you can use the Graphical Interface of the Desktop app to add Zen Browser to the trusted browsers list.
#### 1. Go into the 1Password desktop app and open Settings.

View file

@ -26,10 +26,8 @@ This [[guides/index|guide]] is designed to help you easily find and download the
## Linux 🐧
- ### x86_64 💽
- [AppImage 🚀](https://github.com/zen-browser/desktop/releases/latest/download/zen-x86_64.AppImage)
- [Portable 📦 `tar.bz2`](https://github.com/zen-browser/desktop/releases/latest/download/zen.linux-x86_64.tar.bz2)
- ### aarch64 💻
- [AppImage 🚀](https://github.com/zen-browser/desktop/releases/latest/download/zen-aarch64.AppImage)
@ -47,9 +45,7 @@ This [[guides/index|guide]] is designed to help you easily find and download the
## MacOS 🍎
- ### aarch64 (M-series chips) 💻
- [DMG File 🗂️](https://github.com/zen-browser/desktop/releases/latest/download/zen.macos-aarch64.dmg)
- ### x86_64 (Intel chips) 💽
- [DMG File 🗂️](https://github.com/zen-browser/desktop/releases/latest/download/zen.macos-x86_64.dmg)
@ -73,21 +69,16 @@ This [[guides/index|guide]] is designed to help you easily find and download the
## Linux 🐧
- ### x86_64 💽
- [AppImage 🚀](https://github.com/zen-browser/desktop/releases/download/twilight/zen-x86_64.AppImage)
- [Portable 📦 `tar.bz2`](https://github.com/zen-browser/desktop/releases/download/twilight/zen.linux-x86_64.tar.bz2)
- ### aarch64 💻
- [AppImage 🚀](https://github.com/zen-browser/desktop/releases/download/twilight/zen-aarch64.AppImage)
- [Portable 📦 `tar.bz2`](https://github.com/zen-browser/desktop/releases/download/twilight/zen.linux-aarch64.tar.bz2)
## MacOS 🍎
- ### aarch64 (M-series chips) 💻
- [DMG File 🗂️](https://github.com/zen-browser/desktop/releases/download/twilight/zen.macos-aarch64.dmg)
- ### x86_64 (Intel chips) 💽
- [DMG File 🗂️](https://github.com/zen-browser/desktop/releases/download/twilight/zen.macos-x86_64.dmg)

View file

@ -29,23 +29,23 @@ This [[guides/index|guide]] will help you customize the appearance of Zen Browse
> [!warning] How do I enable the Browser Developer Tools?
> After Zen Browser version `1.0.0-a.31` the Browser Developer Tools is **disabled** by default for security.
>
> 1. Open the `about:config` page. This page contains advanced settings for the browser.
> 2. Search for `devtools.debugger.remote-enabled`
> 3. Toggle the setting to `true` by double-clicking on it
## Step 4: Edit the `userChrome.css` File
1. The `userChrome.css` file should now be visible in the Style Editor.
2. You can start editing the file directly within the Style Editor.
- **Note:** You can use the **Inspect** button ![[inspect.png]] to hover over and select elements on the page. This allows you to learn about the `id`, `class`, or other attributes of elements, which you can then target in your `userChrome.css` file.
1. To apply your changes, save the file by clicking **Save** or by pressing `Ctrl + S`.
3. To apply your changes, save the file by clicking **Save** or by pressing `Ctrl + S`.
> [!warning]
> If a style does not apply as expected, try adding the `!important` keyword at the end of the CSS rule. This forces the browser to apply the style regardless of any other existing styles.
> [!tip]
> If you wish to edit pop-ups or menus that automatically hide, be sure to enable the `Disable Popup Auto-Hide` option from the *Browser Toolbox* settings menu ( ⋯ button )
> If you wish to edit pop-ups or menus that automatically hide, be sure to enable the `Disable Popup Auto-Hide` option from the _Browser Toolbox_ settings menu ( ⋯ button )
Any changes you make to the `userChrome.css` file will be applied immediately to Zen Browser.
Use this file to customize various UI elements, such as colors, fonts, and the layout.

View file

@ -21,7 +21,6 @@ This guide will help you:
### 1. Open Your Current Profile Folder
1. Go to `about:support` in Firefox.
2. Under the "Application Basics" section, click on "Open Folder" next to "Profile Folder."

View file

@ -6,11 +6,12 @@ lastmod: 2024-09-11
Welcome to **Zen Browser's Documentation!** Here, you'll find everything you need to get the most out of your browsing experience. Dive in to explore how Zen can make your browsing more secure, private, and efficient.
## Index
* #### [[building|Building Zen Browser 📦]]
* #### [[user-manual/index|User Manual 📖]]
* #### [[guides/index|Guides 🛠️]]
* #### [[themes-store/index|Mods Registry 🎨]]
* #### [[faq | Frequently Asked Questions ❓]]
* #### [[benchmarks | Performance Benchmarks 📊]]
* #### [[contribute/index | Contribution Guides 🌟]]
* #### [[security|Security 🔐]]
- #### [[building|Building Zen Browser 📦]]
- #### [[user-manual/index|User Manual 📖]]
- #### [[guides/index|Guides 🛠️]]
- #### [[themes-store/index|Mods Registry 🎨]]
- #### [[faq | Frequently Asked Questions ❓]]
- #### [[benchmarks | Performance Benchmarks 📊]]
- #### [[contribute/index | Contribution Guides 🌟]]
- #### [[security|Security 🔐]]

View file

@ -5,9 +5,11 @@ aliases:
description: At Zen Browser, your online safety and privacy are our top priorities. We've implemented a range of security features to ensure you're protected while browsing.
lastmod: 2024-09-18
---
> [!important] Password, Cookies, and Cache Management
> All passwords, cookies, and cache in Zen Browser are **managed by Firefox**. This means your saved passwords are **automatically encrypted**, providing an extra layer of security to keep your login credentials safe. Cookies and cache are also handled according to Firefox's strict privacy policies, ensuring your data is stored securely and only accessible to you.
> For more information visit [Firefox Privacy and Security](https://support.mozilla.org/es/products/firefox/privacy-and-security)
## Adjusting Security Settings
Zen Browser lets you customize privacy and security settings to improve your browsing safety. If you want to adjust or change these settings:
@ -16,10 +18,12 @@ Zen Browser lets you customize privacy and security settings to improve your bro
2. On the sidebar, go to the `Privacy & Security` section.
---
## Security settings
> [!success] Latest Firefox Version
> Zen Browser is built on the **latest version of Firefox**, one of the most secure browsers available today. This means you benefit from all of Firefox's security patches and updates as soon as they are released, keeping you safe from known vulnerabilities.
### 1. OCSP Enabled
Zen Browser uses **OCSP (Online Certificate Status Protocol)** to check the validity of a websites security certificate. This ensures that you only connect to safe websites with up-to-date and valid certificates, protecting you from malicious sites that may have expired or revoked certificates.
@ -31,16 +35,19 @@ Zen Browser uses **OCSP (Online Certificate Status Protocol)** to check the vali
> [!info] You can enable HTTPS-Only Mode in **all windows** or **private windows only**.
For more information visit [HTTPS-Only Mode in Firefox](https://support.mozilla.org/en-US/kb/https-only-prefs)
### 3. Deceptive Content and Dangerous Software Protection
Zen Browser helps protect you from **phishing, malware, and fraudulent websites**. It uses URL filters and real-time checks to block harmful content, making your browsing experience safer.
To learn more, visit [Block deceptive content and dangerous downloads in Firefox](https://support.mozilla.org/en-US/kb/block-deceptive-content-and-dangerous-downloads-firefox)
### 4. SSL Treat Unsafe Negotiation as Broken by Default
Zen Browser treats insecure SSL connections (those that don't meet modern security standards) as broken by default. This means that if a **website is not properly secured**, Zen Browser will alert you and **block the unsafe connection**, preventing potential security risks.
---
## Privacy settings
### 1. Tracking Protection

View file

@ -13,7 +13,6 @@ The `property` field is a string that should follow Firefox's preference naming
For example: `mod.mymod.background_color`
### Field: `label` - Label
The `label` field is the description that will be visible to users in the Zen Mods settings page.
@ -67,7 +66,6 @@ The `dropdown` type allows to select a single choice on multiple options.
The `string` type is a text input that allows to insert valid css values without being a selection.
```json title="String Example"
{
"property": "mod.mymod.tab_padding",
@ -76,7 +74,6 @@ The `string` type is a text input that allows to insert valid css values without
}
```
### Field: `options` - Options (only for `type`: `dropdown`)
The `options` field is an array of option objects, only available for the `dropdown` type. This field must be an array containing one or more option objects.
@ -96,8 +93,8 @@ The `options` field is an array of option objects, only available for the `dropd
Each option object defines a possible value for the dropdown menu. It contains two fields: `label` and `value`.
* The `label` is the description that will be displayed in the dropdown menu. This field accepts a string and allows white space.
* The `value` field contains the value that will be assigned as a CSS property. Only `string` or `int` values are valid. Strings may not contain white space or special characters.
- The `label` is the description that will be displayed in the dropdown menu. This field accepts a string and allows white space.
- The `value` field contains the value that will be assigned as a CSS property. Only `string` or `int` values are valid. Strings may not contain white space or special characters.
```json title="Example"
{
@ -131,6 +128,7 @@ Some CSS modifications may not function properly on all operating systems. You c
This field accepts an array of the following values: `macos`, `linux` or/and `windows`.
For example:
```json title="Disabled on MacOS" {2}
{
"disabledOn": ["macos"] // disables the preference for MacOS
@ -198,6 +196,7 @@ Below is a full example of what a `preferences.json` file might look like with m
```
In this example:
- The `preferences.json` file contains a list of three preference objects.
- Each object defines a `property`, `label`, and `type`.
- Optionally, each object defines either a `defaultValue`, `disabledOn` or `placeholder`.
@ -237,15 +236,14 @@ You can use the following CSS to change the background color when the dark mode
```
You can also have negative conditions
```css {1}
@media not (-moz-bool-pref: "mod.mymod.enable_dark_mode")
```
```css {1}
@media not (-moz-bool-pref: "mod.mymod.enable_dark_mode");
```
### Dropdown Preferences
> [!attention]
> `property` fields defined in `preferences.json` using the `"dropdown"` type will have one key difference when used in your mods CSS: **dots (`.`) in the `property` name are replaced with hyphens (`-`)**.
> [!attention] > `property` fields defined in `preferences.json` using the `"dropdown"` type will have one key difference when used in your mods CSS: **dots (`.`) in the `property` name are replaced with hyphens (`-`)**.
>
> E.g. `mod.mymod.background_color` becomes `mod-mymod-background_color` in the CSS file.
> This transformation ensures that the property can be used as an attribute selector or inside a media query.
@ -289,6 +287,7 @@ body:has(#mod-mymod[mod-mymod-background_color="blue"]) {
```
In this example:
- The background color and text color change based on the value selected in the `background_color` dropdown.
- The selector `body:has(#mod-mymod[background_color="value"]){:css}` checks the `background_color` attribute and applies the relevant styles based on the selected option.
@ -348,6 +347,7 @@ body:has(#mod-mymod[mod-mymod-background_color="blue"]) {
```
This allows users to:
- Toggle dark mode on/off using the checkbox.
- Select a background color from the dropdown, which dynamically changes the background and text colors based on the user's choice.
@ -357,8 +357,7 @@ This allows users to:
String preferences can be detected in your CSS using the `var(--property)` operator. The preference property is saved at `:root` level.
> [!attention]
> `property` fields defined in `preferences.json` using the `"string"` type will have one key difference when used in your mods CSS: **dots (`.`) in the `property` name are replaced with hyphens (`-`)**.
> [!attention] > `property` fields defined in `preferences.json` using the `"string"` type will have one key difference when used in your mods CSS: **dots (`.`) in the `property` name are replaced with hyphens (`-`)**.
>
> E.g. `mod.mymod.background_color` becomes `mod-mymod-background_color` in the CSS file.
> This transformation ensures that the property can be used as an attribute selector or inside a media query.
@ -377,6 +376,6 @@ You can use the following CSS to change the background color when the dark mode
```css {2}
.myClass {
background-color: var(--mod-mymod-background_color)
background-color: var(--mod-mymod-background_color);
}
```

View file

@ -6,12 +6,14 @@ lastmod: 2025-02-07
If you are a [mod developer] and would like to submit your mod, please follow these guidelines:
1. **Mod requirements**:
- Your mod must be compatible with Zen Browser.
- Your mod must be open-source.
- Your mod must not contain any malicious code.
- Your mod must not violate any copyright laws.
2. **Mod Validation**:
- Your mod's name must be unique and less than `25` characters.
- Your mod's description must be less than `100` characters.
- Your mod's screenshot must be a `PNG` with a size of `600x400` (it can be resized after upload).
@ -20,6 +22,7 @@ If you are a [mod developer] and would like to submit your mod, please follow th
- See how preferences work [here](themes-store/themes-marketplace-preferences.md).
3. **Mod Submission**:
- To submit your mod, please create an issue [here](https://github.com/zen-browser/theme-store/issues/new?assignees=&labels=new-theme&projects=&template=create-theme.yml&title=%5Bcreate-theme%5D%3A+)
- Fill out the template with the required information.
- Once you have submitted your mod, it will be analyzed by a bot and a pull request will be created.

View file

@ -14,6 +14,3 @@ Switching profiles gives you a “fresh” browsing instance each time, letting
> [!note]
> If you'd like separate environments inside a single browser instance, try **[[Workspaces + Containers]]** for a flexible, organized setup within the same profile.

View file

@ -15,11 +15,10 @@ aliases:
Zen Browsers **URL bar** is a powerful tool that helps you navigate the web quickly and efficiently. There's no need to open a new tab or window to search the web—simply type your query into the URL bar and hit Enter to search. The URL bar also supports direct navigation to websites, so you can type a URL and press Enter to visit the site directly.
* Can be disabled in settings or `about:config` (`zen.urlbar.replace-newtab`)
- Can be disabled in settings or `about:config` (`zen.urlbar.replace-newtab`)
### How does it work?
* When trying to open a new tab, the search bar will appear. This allows you to navigate faster and more efficiently by being able to type out the address or getting auto-completed without having a change in the view.
* If the newtab urlbar is closed but you've typed something. The text is remembered unless the URL or tab has been changed.
* Otherwise, the functionality is basically the same as before, only when focusing the urlbar either by clicking on with the shortcut
- When trying to open a new tab, the search bar will appear. This allows you to navigate faster and more efficiently by being able to type out the address or getting auto-completed without having a change in the view.
- If the newtab urlbar is closed but you've typed something. The text is remembered unless the URL or tab has been changed.
- Otherwise, the functionality is basically the same as before, only when focusing the urlbar either by clicking on with the shortcut

View file

@ -11,6 +11,3 @@ aliases:
The **Zen Web Panel** brings your favorite web apps—like chats, notes, or to-do lists—right into your browser window for quick, side-by-side multitasking. Instead of switching tabs, you can keep essentials within reach, making it easy to reference or interact without losing focus on your main task.
With options to float or pin these panels alongside your browsing tabs, the Sidebar is perfect for keeping tools like messaging or music accessible. Planned upgrades will even add notification badges for real-time updates, creating a streamlined and productive workspace within Zen.

182
package-lock.json generated
View file

@ -41,6 +41,7 @@
"rehype-citation": "^2.2.1",
"rehype-katex": "^7.0.1",
"rehype-mathjax": "^6.0.0",
"rehype-pretty-code": "^0.14.0",
"rehype-raw": "^7.0.0",
"rehype-slug": "^6.0.0",
"remark": "^15.0.1",
@ -1361,6 +1362,82 @@
"node": ">=0.10"
}
},
"node_modules/@shikijs/core": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz",
"integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@shikijs/engine-javascript": "1.29.2",
"@shikijs/engine-oniguruma": "1.29.2",
"@shikijs/types": "1.29.2",
"@shikijs/vscode-textmate": "^10.0.1",
"@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.4"
}
},
"node_modules/@shikijs/engine-javascript": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz",
"integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==",
"license": "MIT",
"peer": true,
"dependencies": {
"@shikijs/types": "1.29.2",
"@shikijs/vscode-textmate": "^10.0.1",
"oniguruma-to-es": "^2.2.0"
}
},
"node_modules/@shikijs/engine-oniguruma": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz",
"integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@shikijs/types": "1.29.2",
"@shikijs/vscode-textmate": "^10.0.1"
}
},
"node_modules/@shikijs/langs": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz",
"integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@shikijs/types": "1.29.2"
}
},
"node_modules/@shikijs/themes": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz",
"integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==",
"license": "MIT",
"peer": true,
"dependencies": {
"@shikijs/types": "1.29.2"
}
},
"node_modules/@shikijs/types": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz",
"integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@shikijs/vscode-textmate": "^10.0.1",
"@types/hast": "^3.0.4"
}
},
"node_modules/@shikijs/vscode-textmate": {
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
"integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
"license": "MIT",
"peer": true
},
"node_modules/@sindresorhus/merge-streams": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
@ -2846,6 +2923,13 @@
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"license": "MIT"
},
"node_modules/emoji-regex-xs": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
"integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==",
"license": "MIT",
"peer": true
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@ -5368,6 +5452,18 @@
}
}
},
"node_modules/oniguruma-to-es": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz",
"integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==",
"license": "MIT",
"peer": true,
"dependencies": {
"emoji-regex-xs": "^1.0.0",
"regex": "^5.1.1",
"regex-recursion": "^5.1.1"
}
},
"node_modules/package-json-from-dist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
@ -5417,6 +5513,12 @@
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/parse-numeric-range": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz",
"integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==",
"license": "ISC"
},
"node_modules/parse5": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
@ -5652,6 +5754,34 @@
"integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==",
"license": "MIT"
},
"node_modules/regex": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz",
"integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==",
"license": "MIT",
"peer": true,
"dependencies": {
"regex-utilities": "^2.3.0"
}
},
"node_modules/regex-recursion": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz",
"integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==",
"license": "MIT",
"peer": true,
"dependencies": {
"regex": "^5.1.1",
"regex-utilities": "^2.3.0"
}
},
"node_modules/regex-utilities": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
"integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
"license": "MIT",
"peer": true
},
"node_modules/rehype-autolink-headings": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz",
@ -5731,6 +5861,41 @@
"url": "https://opencollective.com/unified"
}
},
"node_modules/rehype-parse": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz",
"integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
"hast-util-from-html": "^2.0.0",
"unified": "^11.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/rehype-pretty-code": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/rehype-pretty-code/-/rehype-pretty-code-0.14.0.tgz",
"integrity": "sha512-hBeKF/Wkkf3zyUS8lal9RCUuhypDWLQc+h9UrP9Pav25FUm/AQAVh4m5gdvJxh4Oz+U+xKvdsV01p1LdvsZTiQ==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.4",
"hast-util-to-string": "^3.0.0",
"parse-numeric-range": "^1.3.0",
"rehype-parse": "^9.0.0",
"unified": "^11.0.5",
"unist-util-visit": "^5.0.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"shiki": "^1.3.0"
}
},
"node_modules/rehype-raw": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
@ -6228,6 +6393,23 @@
"node": ">=8"
}
},
"node_modules/shiki": {
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz",
"integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==",
"license": "MIT",
"peer": true,
"dependencies": {
"@shikijs/core": "1.29.2",
"@shikijs/engine-javascript": "1.29.2",
"@shikijs/engine-oniguruma": "1.29.2",
"@shikijs/langs": "1.29.2",
"@shikijs/themes": "1.29.2",
"@shikijs/types": "1.29.2",
"@shikijs/vscode-textmate": "^10.0.1",
"@types/hast": "^3.0.4"
}
},
"node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",

View file

@ -67,6 +67,7 @@
"rehype-citation": "^2.2.1",
"rehype-katex": "^7.0.1",
"rehype-mathjax": "^6.0.0",
"rehype-pretty-code": "^0.14.0",
"rehype-raw": "^7.0.0",
"rehype-slug": "^6.0.0",
"remark": "^15.0.1",

View file

@ -27,9 +27,11 @@ export const defaultContentPageLayout: PageLayout = {
left: [
Component.PageTitle(),
Component.MobileOnly(Component.Spacer()),
Component.MobileOnly(ExtraComponent.OverlayExplorer(
{filterFn: (node) => (node.name !== "tags" && node.name !== "License")},
)),
Component.MobileOnly(
ExtraComponent.OverlayExplorer({
filterFn: (node) => node.name !== "tags" && node.name !== "License",
}),
),
Component.Search(),
Component.Darkmode(),
Component.DesktopOnly(Component.Explorer()),
@ -47,9 +49,11 @@ export const defaultListPageLayout: PageLayout = {
left: [
Component.PageTitle(),
Component.MobileOnly(Component.Spacer()),
Component.MobileOnly(ExtraComponent.OverlayExplorer(
{filterFn: (node) => (node.name !== "tags" && node.name !== "License")},
)),
Component.MobileOnly(
ExtraComponent.OverlayExplorer({
filterFn: (node) => node.name !== "tags" && node.name !== "License",
}),
),
Component.Search(),
Component.Darkmode(),
Component.DesktopOnly(Component.Explorer()),

View file

@ -1,5 +1,9 @@
// Nothing yet
import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "../components/types"
import {
QuartzComponent,
QuartzComponentConstructor,
QuartzComponentProps,
} from "../components/types"
import overlayexplorerStyle from "./styles/overlayexplorer.scss"
// @ts-ignore
@ -50,7 +54,6 @@ type OlExplorerNodeProps = {
}
function OverlayExplorerNode({ node, opts, fullPath, fileData }: OlExplorerNodeProps) {
// Calculate current folderPath
const folderPath = node.name !== "" ? joinSegments(fullPath ?? "", node.name) : ""
const href = resolveRelative(fileData.slug!, folderPath as SimpleSlug) + "/"
@ -59,9 +62,7 @@ function OverlayExplorerNode({node, opts, fullPath, fileData}: OlExplorerNodePro
<>
{node.file ? (
<li key={node.file.slug}>
<a href={resolveRelative(fileData.slug!, node.file.slug!)}>
{node.displayName}
</a>
<a href={resolveRelative(fileData.slug!, node.file.slug!)}>{node.displayName}</a>
</li>
) : (
<li>
@ -113,7 +114,10 @@ function OverlayExplorerNode({node, opts, fullPath, fileData}: OlExplorerNodePro
)}
</div>
)}
<div data-ol-children-for={folderPath} class={`ol-folder-outer ${(node.depth === 0 || opts.folderDefaultState === "open") && "open"}`}>
<div
data-ol-children-for={folderPath}
class={`ol-folder-outer ${(node.depth === 0 || opts.folderDefaultState === "open") && "open"}`}
>
<ul
style={{
paddingLeft: node.name !== "" ? "1.4rem" : "0",

View file

@ -1,5 +1,3 @@
import OverlayExplorer from "./OverlayExplorer"
export {
OverlayExplorer,
}
export { OverlayExplorer }

View file

@ -6,18 +6,16 @@ type MaybeHTMLElement = HTMLElement | undefined
function setFolder(folderPath: string, open: boolean) {
const childrenList = document.querySelector(
`[data-ol-children-for='${folderPath}']`
`[data-ol-children-for='${folderPath}']`,
) as MaybeHTMLElement
if (!childrenList) return
const folderEntry = document.querySelector(
`[data-ol-selector-for='${folderPath}']`
`[data-ol-selector-for='${folderPath}']`,
) as MaybeHTMLElement
if (!folderEntry) return
const collapseIcon = folderEntry.getElementsByTagName(
"svg"
)[0] as MaybeHTMLElement
const collapseIcon = folderEntry.getElementsByTagName("svg")[0] as MaybeHTMLElement
if (!collapseIcon) return
if (open) {
@ -61,13 +59,11 @@ function setupOverlayExplorer() {
const folderPath = target.parentNode.getAttribute("data-ol-selector-for")
const childrenList = document.querySelector(
`[data-ol-children-for='${folderPath}']`
`[data-ol-children-for='${folderPath}']`,
) as MaybeHTMLElement
if (!childrenList) return
const collapseIcon = target.parentNode.getElementsByTagName(
"svg"
)[0] as MaybeHTMLElement
const collapseIcon = target.parentNode.getElementsByTagName("svg")[0] as MaybeHTMLElement
if (!collapseIcon) return
childrenList.classList.toggle("open")
@ -75,10 +71,7 @@ function setupOverlayExplorer() {
if (useSaveState) {
folderOpenMap.set(folderPath, collapseIcon.classList.contains("open"))
localStorage.setItem(
"olFileTree",
JSON.stringify(Array.from(folderOpenMap.entries()))
)
localStorage.setItem("olFileTree", JSON.stringify(Array.from(folderOpenMap.entries())))
}
}

View file

@ -159,6 +159,5 @@ svg {
}
}
}
}
}

1
tsconfig.tsbuildinfo Normal file

File diff suppressed because one or more lines are too long