diff --git a/.gitignore b/.gitignore index 6704566..dbf0821 100644 --- a/.gitignore +++ b/.gitignore @@ -1,104 +1 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-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 - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# Next.js build output -.next - -# 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 +node_modules/* \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 544138b..0000000 --- a/.prettierrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "singleQuote": true -} diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 8f858fd..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,344 +0,0 @@ -# changelog - -**potential future features (not confirmed)** - -- [highlight/mark viewer](https://chrome.google.com/webstore/detail/notion%2B-mark-manager/hipgmnlpnimedfepbfbfiaobohhffcfc) -- [advanced math editor](https://github.com/Manueloccorso/NotionMathEditor_BrowserExtension) - -### v0.10.2 (2020-12-05) - -again, an emergency release for bugfixes. -not properly documented and new features have not yet been fully reviewed/edited. - -- new: side panel - adds an extra sidebar on the right for use by other mods, - toggleable with `ctrl+shift+backslash`. -- improved: notion icons uses spritesheets for faster loading of icons. -- improved: icon sets can be hidden/toggled. -- improved: toggles in the enhancer menu follow the same style as notion's toggles. -- improved: separate quote font variable & option in the font chooser mod (`--theme_[dark|light]--font_quote`). -- improved: option to hide the "page details" text for the word counter extension. -- bugfix: notion icons tab is now visible in fullpage databases. -- bugfix: code line numbers handles wrapped code blocks. -- bugfix: file explorer no longer opens when enhancer menu is opened. -- bugfix: enable the remote module in webviews (windows/tabs) for compatibility with the - updated version of electron used by new notion builds (>= 2.0.10). -- bugfix: add support for enhancing an `app` folder if there is no `app.asar` file present. -- extension: "outliner" = table of contents in right sidebar. -- extension: "panel sites" = embed sites on the site panel. -- extension: "indentation lines" = adds vertical relationship lines to make list trees easier to follow. -- extension: "truncated table titles" = see the full text of the truncated table titles on hover over. - -> 📥 `npm i -g notion-enhancer@0.10.2` - -### v0.10.1 (2020-11-18) - -essentially a prerelease for v0.11.0: pushed out for urgent bugfixes during -exam/study weeks when there's no time to code a full release. - -note that this means new features have not yet been fully documented and -may not be fully ready for ideal use yet. however, things overall will -work more reliably than v0.10.0. - -- new: different css entrypoints for different components (tabs, menu, app). -- improved: use an svg for the scroll-to-top button. -- improved: use a better-matching icon and add transitions to the property layout toggle. -- improved: themes are directly applied to tabs and menu rather than sync-ed between (infinite loading). -- improved: error message "is notion running?" --> clearer "make sure notion isn't running!" -- improved: auto-shrink system for tabs (max of 15 open in a window). -- bugfix: disable fadein of selected block halo with snappy transitions. -- bugfix: increase contrast of `--theme_dark--interactive_hover` in dark+ and dracula. -- bugfix: tabs are focused properly for input. -- bugfix: keyboard shortcut listeners are stricter so they don't conflict. -- bugfix: dots indicating draggability are no longer next to the tabs mod in the menu. -- bugfix: prevent empty hotkeys from triggering every keypress. -- bugfix: don't try loading an empty default page url (infinite loading). -- bugfix: remove `* { z-index: 1}` rule so format dropdowns in table view can be opened. -- extension: "topbar icons" = replaces the topbar buttons with icons. -- extension: "code line numbers" = adds line numbers to code blocks. -- extension: "notion icons" = use custom icon sets directly in notion. -- tweak: vertical indentation/relationship lines for lists. -- tweak: scroll database toolbars horizontally if partially hidden. -- tweak: condense bullet points (decrease line spacing). - -> 📥 `npm i -g notion-enhancer@0.10.1` - -### v0.10.0 (2020-11-02) - -a flexibility update. - -- new: mods can be reordered in the menu to control what order styling/scripts are added/executed in. - higher up on the list = higher priority of application = loaded last in order to override others. - (excluding the core, which though pinned to the top of the list is always loaded first so theming - variables can be modified.) -- new: relaunch button in tray menu. -- new: a core mod option for a default page id/url (all new windows will load it instead of the - normal "most recent" page). -- new: css variables for increasing line spacing/paragraph margins. -- new: patch the notion:// url scheme/protocol to work on linux. -- new: menu shows theme conflicts + a core mod option to auto-resolve theme conflicts. -- new: a `-n` cli option. -- improved: menu will now respect integrated titlebar setting. -- improved: use keyup listeners instead of a globalShortcut for the enhancements menu toggle. -- improved: overwrite `app.asar.bak` if already exists (e.g. for app updates). -- improved: additional menu option descriptions on hover. -- improved: listen to prefers-color-scheme to better change theme in night shift. -- improved: platform-specific option overrides for features not required on macOS. -- improved: made extra padding at the bottom with the "focus mode" extension toggleable. -- bugfix: removed messenger emoji set as the provider no longer supports it. -- bugfix: remove shadow around light mode board headers. -- bugfix: properly detect/respond to `EACCES`/`EBUSY` errors. -- bugfix: night shift checks every interaction, - will respond to system changes without any manual changes. -- bugfix: toc blocks can have text colours. -- bugfix: bypass preview extension works with the back/forward keyboard shortcuts. -- bugfix: (maybe) fix csp issues under proxy. -- bugfix: remove focus mode footer from neutral theme + better contrast in calendar views. -- bugfix: improvements to the colour theming, particularly to make real- and fake-light/dark - modes (as applied by the night shift extension) look consistent. - relevant variables (assuming all are prefixed by `--theme_[dark|light]--`): - `box-shadow`, `box-shadow_strong`, `select_input`, and `ui-border` -- bugfix: font sizing applied to overlays/previews. -- bugfix: removed typo in variable name for brown text. -- bugfix: primary-colour text (mainly in "add a \_" popups) is now properly themed. -- bugfix: right-to-left extension applies to text in columns. -- bugfix: block text colour applies to text with backgrounds. -- bugfix: font applied to wrong mode with littlepig dark. -- bugfix: keep "empty" top bar visible in the menu. -- bugfix: set NSRequiresAquaSystemAppearance to false in /Applications/Notion.app/Contents/Info.plist - so system dark/light mode can be properly detected. -- bugfix: make ctrl+f popover shadow less extreme. -- bugfix: "weekly" calendar view name made case insensitive. -- bugfix: re-show hidden windows when clicking on the dock. -- tweak: sticky table/list rows. -- theme: "material ocean" = an oceanic colour palette. -- theme: "cherry cola" = a delightfully plummy, cherry cola flavored theme. -- theme: "dracula" = a theme based on the popular dracula color palette - originally by zeno rocha and friends. -- extension: "tabs" = have multiple notion pages open in a single window. tabs can be controlled - with keyboard shortcuts and dragged/reordered within/between windows. -- extension: "scroll to top" = add an arrow above the help button to scroll back to the top of a page. -- extension: "tweaks" = common style/layout changes. includes: - - new: make transitions snappy/0s. - - new: in-page columns are disabled/wrapped and pages are wider when - the window is narrower than 600px for improved responsiveness. - - new: thicker bold text for better visibility. - - new: more readable line spacing. - - moved: smooth scrollbars. - - moved: change dragarea height. - - moved: hide help. - -a fork of notion-deb-builder that does generate an app.asar has been created and is once again supported. - -> 📥 `npm i -g notion-enhancer@0.10.0` - -### v0.9.1 (2020-09-26) - -- bugfix: font chooser will continue iterating through fonts after encountering a blank option. -- bugfix: block indents are no longer overriden. -- bugfix: neutral does not force full width pages. -- bugfix: bypass preview extension works with the back/forward arrows. -- bugfix: check all views on a page for a weekly calendar. -- bugfix: emoji sets no longer modifies the user agent = doesn't break hotkeys. - -> 📥 `npm i -g notion-enhancer@0.9.1` - -### v0.9.0 (2020-09-20) - -a feature and cleanup update. - -- improved: halved the number of css rules used -> much better performance. -- improved: font imports must be define in the `mod.js` so that they can also be used in - the enhancements menu. -- improved: tiling window-manager support (can hide titlebars entirely without dragarea/buttons). -- improved: extensions menu search is now case insensitive and includes options, inputs and versions. - the search box can also for focused with `CMD/CTRL+F`. -- improved: extensions menu filters shown either a ✓ or × to help understand the current state. -- improved: added individual text-colour rules for different background colours. -- improved: added variables for callout colouring. -- improved: replaced with `helpers.getNotion()` with the constant `helpers.__notion` to reduce - repeated function calls. -- improved: added variables for page width. -- improved/bugfix: emoji sets extension should now work on macOS and will change user agent to use - real emojis instead of downloading images when system default is selected. -- bugfix: enhancer settings should no longer reset on update (though this will not have - effect until the release after this one). -- bugfix: blue select tags are no longer purple. -- bugfix: page titles now respond to small-text mode. -- bugfix: weekly calendar view height is now sized correctly according to its contents. -- bugfix: made the open enhancements menu hotkey configurable and changed the default to `ALT+E`. - to remove conflict with the inline code highlight shortcut. -- bugfix: update property-layout to match notion changes again. -- bugfix: updated some of the tweak styling to match notion changes. -- bugfix: block-level text colours are now changed properly. -- bugfix: do not require data folder during installation, to prevent `sudo` attempting to - create it in `/var/root/`. -- bugfix: bullet points/checkboxes will now align properly in the right-to-left extension. -- themes: "littlepig" (light + dark) = monospaced themes using emojis and colourful text. -- extension: "font chooser" = customize fonts. for each option, type in the name of the font you would like to use, - or leave it blank to not change anything. -- extension: "always on top" = add an arrow/button to show the notion window on top of other windows - even if it's not focused. -- extension: "calendar scroll" = add a button to scroll down to the current week in fullpage/infinite-scroll calendars. -- extension: "hide help button" = hide the help button if you don't need it. -- extension: "bypass preview" = go straight to the normal full view when opening a page. -- extension: "word counter" = add page details: word/character/sentence/block count & speaking/reading times. - -notion-deb-builder has been discovered to not generate an app.asar and so is no longer supported. - -> 📥 `npm i -g notion-enhancer@0.9.0` - -### v0.8.5 (2020-08-29) - -- bugfix: separate text highlight and select tag variables. -- bugfix: bypass CSP for the `enhancement://` protocol - was failing on some platforms? - -> 📥 `npm i -g notion-enhancer@0.8.5` - -### v0.8.4 (2020-08-29) - -- bugfix: property-layout now works consistently with or without a banner. - -> 📥 `npm i -g notion-enhancer@0.8.4` - -### v0.8.3 (2020-08-29) - -previous release was a mistake: it did as intended on linux, but broke windows. -this should achieve the same thing in a more compatible way. - -> 📥 `npm i -g notion-enhancer@0.8.3` - -### v0.8.2 (2020-08-28) - -some things you just can't test until production... fixed the auto-installer -to use `./bin.js` instead of `notion-enhancer` - -> 📥 `npm i -g notion-enhancer@0.8.2` - -### v0.8.1 (2020-08-28) - -a clarity and stability update. - -- improved: more informative cli error messages (original ones can be accessed with the `-d/--dev` flag). -- bugfix: gallery variable didn't apply on fullpage. -- bugfix: date picker hid current date number. -- bugfix: small-text pages should now work as expected. -- bugfix: padding issues in page previews. -- bugfix: property-layout extension had been broken by internal notion changes. -- bugfix: linux installer path typo. -- bugfix: caret-color was being mistaken for color and block-level text colouring was broken. -- improved: auto-application on install. - -> 📥 `npm i -g notion-enhancer@0.8.1` - -### v0.8.0 (2020-08-27) - -complete rewrite with node.js. - -- new: simpler cli installation system (inc. commands: `apply`, `remove`, and `check`). -- new: mod loading system (easier to create new mods, adds to notion rather than overwriting). -- new: mod configuration menu. -- improved: more theming variable coverage - inc. light theme and sizing/spacing. -- bugfix: non-reproducable errors with python. -- bugfix: better launcher patching on linux. -- bugfix: fix frameless window issue introduced by notion desktop 2.0.9. -- extension: "custom inserts" = link files for small client-side tweaks. -- extension: "bracketed links" = render links surrounded with \[\[brackets]] instead of underlined. -- extension: "focus mode" = hide the titlebar/menubar if the sidebar is closed (will be shown on hover). -- theme: "dark+" = a vivid-colour near-black theme. -- theme: "neutral" = smoother colours and fonts, designed to be more pleasing to the eye. -- theme: "gameish" = a purple, "gamer-styled" theme with a blocky-font. -- theme: "pastel dark" = a smooth-transition true dark theme with a hint of pastel. -- extension: "emoji sets" = pick from a variety of emoji styles to use. -- extension: "night shift" = sync dark/light theme with the system (overrides normal theme setting). -- extension: "right-to-left" = enables auto rtl/ltr text direction detection. (ported from [github.com/obahareth/notion-rtl](https://github.com/obahareth/notion-rtl).) -- extension: "weekly view" = calendar views named "weekly" will show only the 7 days of this week. (ported from [github.com/adihd/notionweeklyview](https://github.com/adihd/notionweeklyview).)] -- extension: "property layout" = auto-collapse page properties that usually push down page content. (ported from [github.com/alexander-kazakov/notion-layout-extension](https://github.com/alexander-kazakov/notion-layout-extension).) - -> 📥 `npm i -g notion-enhancer@0.8.0` - -### v0.7.0 (2020-07-09) - -- new: tray option to use system default emojis (instead of twitter's emojiset). -- new: mac support (identical functionality to other platforms with the - exception of the native minimise/maximise/close buttons being kept, as they integrate - better with the OS while not being out-of-place in notion). -- new: notion-deb-builder support for linux. -- new: an alert will be shown if there is an update available for the enhancer. -- improved: replaced button symbols with svgs for multi-platform support. -- improved: window close button is now red on hover (thanks to [@torchatlas](https://github.com/torchatlas)). -- bugfix: `cleaner.py` patched for linux. -- bugfix: tray now operates as expected on linux. -- bugfix: odd mix of `\\` and `/` being used for windows filepaths. -- bugfix: app no longer crashes when sidebar is toggled. - -> 📥 [notion-enhancer.v0.7.0.zip](https://github.com/notion-enhancer/notion-enhancer/archive/v0.7.0.zip) - -### v0.6.0 (2020-06-30) - -- style: custom fonts. -- style: font resizing. -- style: hide discussions (thanks to [u/Roosmaryn](https://www.reddit.com/user/Roosmaryn/)). -- new: custom colour theming, demonstrated via the dark+ theme. -- new: linux support (thanks to [@Blacksuan19](https://github.com/Blacksuan19)). -- improved: if hotkey is pressed while notion is unfocused, it will bring it to the front rather than hiding it. -- improved: stop window buttons breaking at smaller widths. -- improved: more obviously visible drag area. -- bugfix: specify UTF-8 encoding to prevent multibyte/gbk codec errors (thanks to [@etnperlong](https://github.com/etnperlong)). - -> 📥 [notion-enhancer.v0.6.0.zip](https://github.com/notion-enhancer/notion-enhancer/archive/v0.6.0.zip) - -### v0.5.0 (2020-05-23) - -- new: running from the wsl. -- new: reload window with f5. -- improved: code has been refactored and cleaned up, - inc. file renaming and a `customiser.py` that doesn't require - a run of `cleaner.py` to build modifications. - improved: scrollbar colours that fit better with notion's theming. -- bugfix: un-break having multiple notion windows open. - -> 📥 [notion-enhancer.v0.5.0.zip](https://github.com/notion-enhancer/notion-enhancer/archive/v0.5.0.zip) - -**development here taken over by [@dragonwocky](https://github.com/dragonwocky).** - -**the ~~crossed out~~ features below are no longer features included by default,** -**but can still easily be added as [custom tweaks](TWEAKS.md).** - -### v0.4.1 (2020-02-13) - -- bugfix: wider table & the "+" button not working in database pages. - -> 📥 [notion-enhancer.v4.1.zip](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d239a3cf-d553-4ef3-ab04-8b47892d9f9a/Notion_Customization_v4.1.zip) - -### v0.4.0 - -- new: tray icon. -- new: app startup options (+ saving). -- new: `Reset.py` -- improved: better output from `Customization Patcher.py`. -- bugfix: wider tables in "short page" mode. -- bugfix: unclickable buttons/draggable area (of titlebar). - -### v0.3.0 - -- new: show/hide window hotkey. -- new: app startup options. -- ~~style: smaller table icons.~~ - -> 📥 [notion-enhancer.v3.zip](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b01aa446-5727-476a-a25e-395472bfb1be/NotionScriptsV3.zip) - -### v0.2.0 - -- new: light/dark theme support for window control buttons + scrollbars. -- new: custom styles directly linked to the enhancer resources + compatible with web version. -- ~~improved: making table column width go below 100px.~~ - -### v0.1.0 - -- new: custom window control buttons. -- removed: default titlebar/menubar. -- ~~removed: huge padding of board view.~~ -- ~~removed: huge padding of table view.~~ -- ~~optional: making table column width go below 100px.~~ -- ~~style: thinner cover image + higher content block.~~ -- style: scrollbars. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 53f79ca..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,111 +0,0 @@ -# contributing - -the enhancer is a tool for the community, so who best to build it but the community? - -these guidelines are designed for smooth communication, management and development on this project. -following them shows respect to the developer/s spending their free time on it, and makes it easiest for them to improve the tool. - -**found a bug / something isn't working as expected?** create a -[bug report](https://github.com/notion-enhancer/notion-enhancer/issues/new?labels=bug&template=bug-report.md). - -> SECURITY ISSUE? (e.g. PERSONAL/NOTION DATA BEING INTERFERED WITH) -> EMAIL ME INSTEAD: [thedragonring.bod@gmail.com](mailto:thedragonring.bod@gmail.com) - -**have a cool new feature idea / there's something you just wish you could do?** submit a -[feature proposal](https://github.com/notion-enhancer/notion-enhancer/issues/new?labels=enhancement&template=feature-proposal.md). - -> enhancements are applied only locally - -> features should be designed only to improve the user experience. - -**know your way around notion/electron/js/css and have some code to contribute?** great! read below for guidelines -on how to create a helpful pull request and what happens with your code afterwards. it's probably also helpful to -join the [discord server](https://discord.gg/sFWPXtA). - -**for information on how to actually create a theme or module with the notion-enhancer api, check the [docs](DOCUMENTATION.md).** - -## testing - -first, remove any other installations of the enhancer: `npm remove -g notion-enhancer` - -to download and install the latest code, run: - -```sh -git clone https://github.com/notion-enhancer/notion-enhancer -cd notion-enhancer -git checkout dev -npm link -notion-enhancer apply -y -``` - -to update the dev build, go into the downloaded folder and run `git pull`. (make sure any work-in-progress themes etc. are copied somewhere else safely first.) - -to remove the dev build, go into the downloaded folder and run: - -```sh -notion-enhancer remove -n -npm unlink -``` - -## conventions - -the enhancer is a **core** extended by included **modules**. -the core can be further split into the **installer** and the **modloader**. -modules are either **extensions** or **themes**. - -each module is separately versioned, following the [semver](https://semver.org/) scheme. -depending on the content and scale of a contribution, it may constitute an update on its own or may be merged into a larger update. - -to keep a consistent & informative code style it is preferred to name variables with -`snake_case`, functions/methods with `camelCase`, and classes with `PascalCase`. -if a variable is a reference to a DOM element, it may be helpful to prefix it with a `$`. - -some variables beginning with a double underscore are `__folder` paths and `ALL_CAPS` variables -are constant. this is not required, but these styles should not be used for any other purpose. - -the master branch is kept consistent with the current release, -so all changes should be made to the dev branch. - -## review - -active core devs will manually look through each pull request and communicate with contributors before merging to -make sure it is: - -**a) safe.** system details (e.g. IP, clipboard) + notion user data are considered private unless directly shared by the user. -none of this should be accessed or transmitted to an external server. - -**b) functional.** is there a better way to do this? can extra dependencies be removed or replaced by newer web technologies? -how can this be made as user-friendly as possible? - -**c) bug-free.** where possible, code should be tested on a variety of platforms in a variety of situations so it can be -confirmed that it won't break anything for the user and is robust enough to handle use by both -power users and non-tech-savvy users. - -## translating - -future versions of the enhancer will have multi-language support. - -if you are willing to help with translation, let me know and i'll contact you when i'm ready. - -## licensing - -this project is distributed under the [MIT](https://choosealicense.com/licenses/mit/) license. -the project as a whole is copyrighted by core devs in the [LICENSE](LICENSE) file. - -when modifying a file, add your copyright to it in the format: - -``` -/* - * module or project name - * (c) year name (website) - * under the MIT license - */ -``` - -all code contributed to this repository remains attributed to the contributor, -but full rights are granted for it to be used under the terms of the MIT license. -on the occasion that the contributed code should be removed or overwritten, -the contributor's copyright may be removed from the file. - -by opening a pull request in this repository, you agree to the above conditions. - -dependencies remain separately licensed to their various authors. diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md deleted file mode 100644 index ad71710..0000000 --- a/DOCUMENTATION.md +++ /dev/null @@ -1,217 +0,0 @@ -# documentation - -the enhancer is essentially a modloader for notion. this document contains the specifications of -how those modules can be made and what they should contain. - -this file assumes basic working knowledge of modern javascript and css. since these are the languages -executable within the notion app, these are the languages enhancements must be written in. - -want to contribute? check the [contribution guidelines](CONTRIBUTING.md). - -for support, join the [discord server](https://discord.gg/sFWPXtA). - -## creating a mod - -_to understand best how notion's app works, check out [the electron docs](https://www.electronjs.org/docs/),_ -_explore the contents of your local extracted `app.asar`, and navigate the html structure with the devtools web inspector._ - -_look through [the existing modules](mods)_ -_for examples of the stuff described below in action._ - -_at the moment, for ease of development and use (and security assurance), there's no way for users_ -_to install their own modules. this means that testing modules requires_ -_[running a dev build of the enhancer](CONTRIBUTING.md#testing). a better system is in the works._ - -_once your mod is working, open a pull request to add it to the enhancer!_ - -each directory in the `mods` folder is considered a module, with the file entry points `mod.js`, -`variables.css`, `app.css`, `tabs.css` and `menu.css`. - -| file | description | -| ------------ | --------------------------------------------------------------------- | -| `mod.js` | **required:** describes the module and contains functional javascript | -| `styles.css` | **optional:** a css file automatically inserted into each app window | - -## mod.js - -```js -// not valid js! -// a visual representation of the contents/type -// of this file's exported object. -module.exports = { - id: String of uuidv4, - name: String of short_name, - tags?: Array of categories, - desc: String of markdown, - version: String of semver, - author: String of github_username OR { - name: String of author_name, - link: String of url, - avatar: String of image_source, - }, - options?: Array<{ - key: String, - label: String, - desc?: String, - type: String in ['toggle', 'select', 'input', 'file'], - value: Boolean or Array or String or Number or null, - platformOverwrite?: { - darwin?: Boolean or Array or String or Number or null, - win32?: Boolean or Array or String or Number or null, - linux?: Boolean or Array or String or Number or null, - } - }>, - hacks?: { - [k: 'insert-point' (e.g. 'main/createWindow.js')]: function ( - store, // used for configuration and persisting of data (explanation below). - __exports // module.exports of the target file. if you don't understand that, don't use it. - ) {} - } -}; -``` - -| key | value | type | -| ------- | ----------------------------------------------------------------------------------------------- | ---------------------- | -| id | **required:** uuidv4 - generate a new one [here](https://www.uuidgenerator.net) | _string_ | -| name | **required:** short name (e.g. `'ocean theme'`) | _string_ | -| tags | **required:** categories/type (e.g. `'extension'`, `'theme'`, `'light'`, `'dark'`) | _array\_ | -| desc | **optional:** 1-3 sentence description of what the module is/does, with basic markdown support. | _string_ | -| version | **required:** semver (e.g. `'0.3.7'`) | _string_ | -| author | **required:** see below: original extension creator | _string_ or \ | -| options | **optional:** see below: options made available in the enhancer menu (accessible from the tray) | _array\_ | -| hacks | **optional:** see below: code inserted at various points | _object_ | - -> a module that with the primary function of being a hack should be tagged as an extension, -> while a module that has the primary function of adding styles should be tagged as a theme. - -#### author - -by default this is assumed to be a github username: just pass it as a string and -the link/avatar will be automatically found. - -if you'd rather customise this, pass this object: - -| key | value | type | -| ------ | ------------------------------------------ | -------- | -| name | **required:** author's (your?) name | _string_ | -| link | **required:** link to the author's profile | _string_ | -| avatar | **required:** url for the author's avatar | _string_ | - -#### options - -| key | value | type | -| ----------------- | ---------------------------------------------------------------------------------------- | --------------------------- | -| key | **required:** key to save value to the mod `store` | _string_ | -| label | **required:** short description/name of option to be shown in menu | _string_ | -| desc | **optional:** extended information to be shown on hover | _string_ | -| type | **required:** input type (see below) | _string_ | -| extensions | **optional:** allowed file extensions (only use with a file option), e.g. `['js', 'ts']` | _array\_ | -| value | **optional:** default or possible value/s for option | see below | -| platformOverwrite | **optional:** remove the option from the menu and force a value on a specific platform | _\_ as shown above | - -| type | value | -| ------ | -------------------- | -| toggle | _boolean_ | -| select | _array\_ | -| input | _string_ or _number_ | -| color | _string_ | -| file | none | - -> the file option stores only a filepath, not the file itself. - -## hacks - -each "hack" is a function taking 2 arguments. - -1. the **`store`** argument, which allows access to the module settings/options defined in `mod.js` - (those set in the menu, or used internally by the module). each module store is automatically saved to + - loaded from `~/.notion-enhancer/id.json`. - it should always be called as `store({ defaults })` (not stored in a variable), - but otherwise treated as a normal object to access and set things. -2. the **`__exports`** argument, which is the `module.exports` of the file being modded. - this can be used to call or replace functions from notion. - -this hack is applied to whichever file (`.js`-only) is set as the function key. these can be found within the `app` folder. - -files under the `main` folder are executed on app launch in a process shared -between all app windows (consider it a backend). files under the `renderer` folder are -executed on window launch in a pre-window process: the client-side javascript -normally expected to run on a webpage. - -unless scripts need to change app logic (e.g. to add the tray menu), -they should usually be applied to `renderer/preload.js` to interact -with the app window itself. - -e.g. - -```js -// sayhi.js -module.exports = function (store, __exports) { - document.addEventListener('readystatechange', (event) => { - if (document.readyState !== 'complete') return false; - console.log(store({ name: 'dragonwocky' }).name); - }); -}; -// mod.js -module.exports.hacks = { - 'renderer/preload.js': require('./sayhi.js'), -}; -``` - -### the `enhancement://` protocol - -any files within the `mods` folder can be loaded with the `enhancement://` protocol. - -for example, inserting an image from the core mod: ``. - -## `variables.css` - -**inserted into all windows.** - -(put font import statements here too.) - -the enhancer has been designed with theming in mind, so as much of notion's colours -and typography as possible and some basic spacing (both for the light and dark themes) have been mapped out -using css variables. - -this set of variables is 100% mandatory to use if you wish to use or change anything they handle -(particularly colours). this is necessary to keep all themes consistently working -(e.g. responding properly to light/dark theme changes), and it makes theming a lot easier - -notion's html structure needs some complex selectors to properly modify it, -and it means theme authors don't have to worry about separately updating their theme every time something changes. - -the full/up-to-date list of variables and their default values can be found in the -[core `variables.css` file](mods/core/variables.css). each variable is named something along the lines of -`--theme_mode--target_name-property`. still not sure what a variable does? try changing it and seeing what happens. - -these are all made possible by the core module. if you believe this set of variables is buggy or lacking in any way, -consider opening a pull request to fix those issues - please do not try and reinvent the wheel unnecessarily. - -> ### using variables -> -> variables should be defined per-mode, but used without specifying. for example: -> -> ```css -> :root { -> --theme_dark--main: rgb(5, 5, 5); -> } -> .demo-element { -> background: var(--theme--main); -> } -> ``` -> -> this to simplify styling and make it possible for things like the "night shift" module to work, -> by leaving the choice of light/dark theme up to the user and then directing the right values to -> the relevant variables. - -## `app.css` - -**inserted into the notion app window.** - -## `tabs.css` - -**inserted into the notion app container for styling tabs.** - -## `menu.css` - -**inserted into the enhancements menu.** diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 26171ec..0000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -MIT License - -Copyright (c) 2020 TarasokUA -Copyright (c) 2020 dragonwocky - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 0415444..431d008 100644 --- a/README.md +++ b/README.md @@ -1,455 +1,3 @@ -# notion-enhancer +# notion-enhancer (desktop) -notion.so is a pretty awesome tool already, but there's always room for improvements. -it might just be a preference, it might be something crucial to your setup, -it might be something users have been asking for for a long time, -or it might even be something you haven't realised you need yet -\- there's something that would make your user experience a lot better. - -this package is a mod-loader for the desktop app, with custom colour theming and extra feature enhancements. - -want to contribute? check out the [contribution guidelines](CONTRIBUTING.md) and the [documentation](DOCUMENTATION.md). - -for support, join the [discord server](https://discord.gg/sFWPXtA). - -### supported desktop clients - -- the [official windows/mac releases](https://notion.so/desktop). -- the arch linux AUR [notion-app](https://aur.archlinux.org/packages/notion-app/) package. -- the linux [notion-app](https://github.com/jaredallard/notion-app) installer. -- the linux [notion-deb-builder](https://github.com/davidbailey00/notion-deb-builder). - -outdated notion versions (< 2.0.10) probably won't work. - -mobile clients are not supported and due to system limitations/restrictions cannot be. - -a chrome extension may be coming soon for web client support. - -## installation - -> **if you are updating from v0.7.0 or earlier,** things have changed, more information is available -> in this [update guide](UPDATING.md). please read that before following these instructions. - -- ensure that no notion windows/processes are running by ending all Notion processes in your task manager. - - `CMD + ALT + ESC` on mac and `CTRL + SHIFT + ESC` on windows/linux to open task manager. -- [install node.js](https://nodejs.org/en/download/) - - you may need to restart your computer. - - notion-enhancer will use node.js, you do not need to interact with it aside from downloading to install notion-enhancer. -- open your computer's terminal, **not the node.js command prompt.** - - **windows 10:** search in your start menu (click windows key or icon in bottom left of screen) for _'cmd'_ or _'command prompt'_. - - **mac:** search in spotlight (magnifying glass in top right of screen) for _'terminal'_. -- type and enter the following line(s) based on your operating system, if there are multiple lines, make sure to enter them _one by one_ . - - **windows 10:** - ``` - npm i -g notion-enhancer - ``` - - **mac:** this may ask you to enter your password, instead of hiding your password with \*\*\* symbols, mac terminal hides it by making it invisible. simply type your password and click enter. - ``` - sudo chmod -R a+wr /usr/local/lib/node_modules - sudo chmod -R a+wr /usr/local/bin - sudo chmod -R a+wr /Applications/Notion.app/Contents/Resources - npm i -g notion-enhancer - ``` - - **debian/ubuntu, chromeOS, wsl (to modify the win10 app):** - ``` - bash curl -sL https://deb.nodesource.com setup_current.x | sudo -E bash - - sudo apt-get install -y nodejs - npm i -g notion-enhancer - ``` - - **arch linux, manjaro:** - - install the [aur package](https://aur.archlinux.org/packages/notion-enhancer) with your aur helper (e.g. `yay -S notion-enhancer`). - -### command-line interface - -the enhancements should be automatically applied on installation -and automatically removed on uninstallation. - -on some platforms this may throw errors if done without -elevated/admin permissions, though, so if it hasn't automatically -installed you will still need to use these commands. - -``` -Usage: - $ notion-enhancer [options] - -Commands: - apply : add enhancements to the notion app - remove : return notion to its pre-enhanced/pre-modded state - check : check the current state of the notion app - -For more info, run any command with the `--help` flag: - $ notion-enhancer apply --help - $ notion-enhancer remove --help - $ notion-enhancer check --help - -Options: - -y, --yes : skip prompts (may overwrite data) - -n, --no : skip prompts (may cause failures) - -d, --dev : show detailed error messages (for debug purposes) - -h, --help : display usage information - -v, --version : display version number -``` - -### faq - -**when will the update be out?** -i code this in my free time, in-between my other commitments. there are no ETAs. - -**the themes aren't working?** -if you pick a dark theme it will only be applied if notion is in dark mode, -and if you pick a light theme it will only work if notion is in light mode. -do `CMD/CTRL+SHIFT+L` to toggle between them. - -**is this against notion's terms of service? can i get in trouble for using it?** -definitely not! i contacted their support team to check, and the response was awesome: - -> "Thanks for taking the time to share this with us. Userscripts and userstyles are definitely -> cool ideas and would be helpful for many users! ... I'll also share this with the rest of the -> team to take to heart for future improvements." - -**how do i uninstall the enhancer?** -run `npm remove -g notion-enhancer`. - -## features - -most of the enhancer's functionality is split into configurable enhancement modules, -but some basic improvements necessary for things to work are built in by values: - -- the notion:// url scheme/protocol is patched to work on linux. -- a tray/menubar icon: links relevant to the enhancer + buttons to manage notion windows. - -once applied, modules can be configured via the graphical menu, -which is opened from the tray/menubar icon or with `OPTION/ALT+E`. - -![](https://user-images.githubusercontent.com/16874139/97819046-34e8b600-1cfa-11eb-8fa6-a3ad5374cd0b.png) - -currently all modules come pre-installed for technical reasons, security assurance, and ease-of-use. -these include: - -### notion-enhancer core - -**tags:** #core - -**description:** the cli, modloader, menu, & tray. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -| option | extended description | type | values/defaults | platform-specific details | -| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -------------------------- | ------------------------- | -| auto-resolve theme conflicts | when a theme is enabled any other themes of the same mode (light/dark) will be disabled. | toggle | no | | -| hide app on open | app can be made visible by clicking the tray icon or using the hotkey. | toggle | no | | -| auto-maximise windows | whenever a window is un-hidden or is created it will be maximised. | toggle | no | | -| close window to the tray | pressing the × close button will hide the app instead of quitting it. it can be re-shown by clicking the tray icon or using the hotkey. | toggle | yes | | -| integrated titlebar | replace the native titlebar with buttons inset into the app. | toggle | yes | macOS: forced on | -| tiling window manager mode | completely remove the close/minimise/maximise buttons - this is for a special type of window manager. if you don't understand it, don't use it. | toggle | no | macOS: forced off | -| window display hotkey | used to toggle hiding/showing all app windows. | [accelerator](https://github.com/electron/electron/blob/master/docs/api/accelerator.md) input | `CommandOrControl+Shift+A` | | -| open enhancements menu hotkey | used to toggle opening/closing this menu while notion is focused. | [accelerator](https://github.com/electron/electron/blob/master/docs/api/accelerator.md) input | `Alt+E` | | -| values/defaults page id/url | every new tab/window that isn't opening a url via the notion:// protocol will load this page. to get a page link from within the app, go to the triple-dot menu and click "copy link". leave blank to just load the last page you opened. | text input | `Alt+E` | | - -![](https://user-images.githubusercontent.com/16874139/97819249-7a59b300-1cfb-11eb-99fa-de945fe8e3d9.png) - -### tabs - -**tags:** #core #extension - -**description:** have multiple notion pages open in a single window. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -| option | type | values/defaults | -| --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| tab select modifier (key+1, +2, +3, ... +9 and key+left/right arrows) | select | `Alt`, `Command`, `Control`, `Super`, `Alt+Shift`, `Command+Shift`, `Control+Shift`, `Super+Shift` | -| new tab keybinding | [accelerator](https://github.com/electron/electron/blob/master/docs/api/accelerator.md) input | `CommandOrControl+T` | -| close tab keybinding | [accelerator](https://github.com/electron/electron/blob/master/docs/api/accelerator.md) input | `CommandOrControl+W` | - -![](https://user-images.githubusercontent.com/16874139/97821456-9dd62b00-1d06-11eb-8c3a-e9f77bbd740e.png) - -### tweaks - -**tags:** #core #extension - -**description:** common style/layout changes. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -| option | extended description | type | values/defaults | platform-specific details | -| ---------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------ | --------------- | ------------------------- | -| height of frameless dragarea | the rectangle added at the top of a window in "integrated titlebar" mode, used to drag/move the window. | number input | 15 | macOS: forced to 0 | -| width to wrap columns at | the size in pixels below which in-page columns are resized to appear full width so content isn't squished. | number input | 600 | | -| integrated scrollbars | use scrollbars that fit better into notion's ui instead of the default chrome ones. | toggle | yes | | -| snappy transitions | | toggle | no | | -| thicker bold text | | toggle | yes | | -| more readable line spacing | | toggle | no | | -| hide help button | | toggle | no | | - -![](https://user-images.githubusercontent.com/16874139/97819829-1638ee00-1cff-11eb-80c6-f270c2ba0f37.png) - -### always on top - -**tags:** #extension - -**description:** add an arrow/button to show the notion window -on top of other windows even if it's not focused. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -![](https://user-images.githubusercontent.com/16874139/97820478-79784f80-1d02-11eb-9e32-caac4563d8f0.png) - -### bracketed links - -**tags:** #extension - -**description:** render links surrounded with \[\[brackets]] instead of underlined. - -**author:** [arecsu](https://github.com/arecsu/) - -![](https://user-images.githubusercontent.com/16874139/97820501-9f9def80-1d02-11eb-8ad8-b1ddf1ed9599.png) - -### bypass preview - -**tags:** #extension - -**description:** go straight to the normal full view when opening a page. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -### calendar scroll - -**tags:** #extension - -**description:** add a button to scroll down to the current week in fullpage/infinite-scroll calendars. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -![](https://user-images.githubusercontent.com/16874139/97820611-fe636900-1d02-11eb-8f78-0536103e25aa.png) - -### cherry cola - -**tags:** #theme #dark - -**description:** a delightfully plummy, cherry cola flavored theme. - -**author:** [runargs](https://github.com/runargs) - -![](https://user-images.githubusercontent.com/16874139/97819898-9fe8bb80-1cff-11eb-846f-1a66e0302ebd.png) - -### custom inserts - -**tags:** #extension - -**description:** link files for small client-side tweaks. (not sure how to do something? check out the -[tweaks](https://github.com/notion-enhancer/tweaks) collection.) - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -| option | type | -| --------------------- | ---- | -| css insert | file | -| client-side js insert | file | - -### dark+ - -**tags:** #theme #dark - -**description:** a vivid-colour near-black theme. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -| option | type | values/defaults | -| -------------- | ----- | ------------------ | -| primary colour | color | `rgb(177, 24, 24)` | - -![](https://user-images.githubusercontent.com/16874139/97820632-19ce7400-1d03-11eb-85a9-87f6d957dc96.png) - -### dracula - -**tags:** #theme #dark - -**description:** a theme based on the popular dracula color palette originally by zeno rocha and friends. - -**author:** [dracula](https://github.com/dracula/) - -![](https://user-images.githubusercontent.com/16874139/97820175-04f0e100-1d01-11eb-9ede-b6e033a28cbc.png) - -### emoji sets - -**tags:** #extension - -**description:** pick from a variety of emoji styles to use. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -| option | type | values/defaults | -| ------ | ------ | --------------------------------------------------------------------------------------------------------------- | -| style | select | twitter, apple, google, microsoft, samsung, whatsapp, facebook, joypixels, openmoji, emojidex, lg, htc, mozilla | - -![](https://user-images.githubusercontent.com/16874139/97820652-3f5b7d80-1d03-11eb-80a6-34089b946711.png) - -### focus mode - -**tags:** #extension - -**description:** hide the titlebar/menubar if the sidebar is closed (will be shown on hover). - -**author:** [arecsu](https://github.com/arecsu/) - -| option | extended description | type | values/defaults | -| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | --------------- | -| add padding to bottom of the page | will only take effect when the sidebar is hidden. aims to make the canvas as symmetrical/consistent as possible: if there is empty space on 3 sides, the 4th should follow. | toggle | on | - -![](https://user-images.githubusercontent.com/16874139/97820337-da535800-1d01-11eb-9df5-55567cba2cc4.png) - -### font chooser - -**tags:** #extension - -**description:** customize fonts. for each option, type in the name of -the font you would like to use, or leave it blank to not change anything. - -**author:** [torchatlas](https://github.com/torchatlas) - -| option | type | -| -------------------- | ---------- | -| sans-serif (inc. ui) | text input | -| serif | text input | -| monospace | text input | -| code | text input | - -![](https://user-images.githubusercontent.com/16874139/97820678-61ed9680-1d03-11eb-8f9f-54c1c5faf25e.png) - -### gameish - -**tags:** #theme #dark - -**description:** a purple, "gamer-styled" theme with a blocky-font. - -**author:** [LVL100ShrekCultist](https://reddit.com/user/LVL100ShrekCultist/) - -![](https://user-images.githubusercontent.com/16874139/97820696-75006680-1d03-11eb-8046-c3cb871ad34c.png) - -### littlepig dark - -**tags:** #theme #dark - -**description:** a purple monospaced theme using emojis and colourful text. - -**author:** [Lizishan](https://www.reddit.com/user/Lizishan/) - -![](https://user-images.githubusercontent.com/16874139/97820718-919c9e80-1d03-11eb-9749-e04faef82e2d.png) - -### littlepig light - -**tags:** #theme #light - -**description:** a bright monospaced theme using emojis and colourful text. - -**author:** [Lizishan](https://www.reddit.com/user/Lizishan/) - -![](https://user-images.githubusercontent.com/16874139/97820868-446cfc80-1d04-11eb-80ba-48cbedd62ed1.png) - -### material ocean - -**tags:** #theme #dark - -**description:** an oceanic colour palette. - -**author:** [blacksuan19](https://github.com/blacksuan19) - -![](https://user-images.githubusercontent.com/16874139/97820253-6d3fc280-1d01-11eb-86d1-9932b364bad8.png) - -### neutral - -**tags:** #theme #dark - -**description:** smoother colours and fonts, designed to be more pleasing to the eye. - -**author:** [arecsu](https://github.com/arecsu/) - -![](https://user-images.githubusercontent.com/16874139/97821029-fad0e180-1d04-11eb-9bad-2c76e9fa7613.png) - -### night shift - -**tags:** #extension #theme - -**description:** sync dark/light theme with the system (overrides normal theme setting). - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -### pastel dark - -**tags:** #theme #dark - -**description:** a true dark theme with a hint of pastel. - -**author:** [zenith_illinois](https://reddit.com/user/zenith_illinois/) - -![](https://user-images.githubusercontent.com/16874139/97820893-60709e00-1d04-11eb-8d52-55ab44000786.png) - -### property layout - -**tags:** #extension - -**description:** auto-collapse page properties that usually push down page content. - -**author:** [alexander-kazakov](https://github.com/alexander-kazakov/) - -![](https://user-images.githubusercontent.com/16874139/97820916-81d18a00-1d04-11eb-8e07-b7519590157a.png) - -### right-to-left - -**tags:** #extension - -**description:** enables auto rtl/ltr text direction detection. - -**author:** [obahareth](https://github.com/obahareth/) - -![](https://user-images.githubusercontent.com/16874139/97820953-a7f72a00-1d04-11eb-98c0-6ad83d097682.png) - -### scroll to top - -**tags:** #extension - -**description:** add an arrow above the help button to scroll back to the top of a page. - -**author:** [CloudHill](https://github.com/CloudHill/) - -| option | type | values/defaults | -| --------------------------------------- | ------------ | --------------- | -| smooth scrolling | toggle | on | -| distance scrolled until button is shown | number input | 50 | -| unit to measure distance with | select | percent, pixels | - -![](https://user-images.githubusercontent.com/16874139/97820445-4c2ba180-1d02-11eb-9d1a-911bca266f7f.png) - -### weekly view - -**tags:** #extension - -**description:** calendar views named "weekly" will show only the 7 days of this week. - -**author:** [adihd](https://github.com/adihd/) - -![](https://user-images.githubusercontent.com/16874139/97820985-bf361780-1d04-11eb-9e2a-786a7c37477d.png) - -### word counter - -**tags:** #extension - -**description:** add page details: word/character/sentence/block count & speaking/reading times. - -**author:** [dragonwocky](https://github.com/dragonwocky/) - -![](https://user-images.githubusercontent.com/16874139/97821003-d37a1480-1d04-11eb-8aaa-9e5dfea495eb.png) - -## contributors - -[@TarasokUA](https://github.com/TarasokUA/) wrote the first versions of this in python, in early 2020. -a couple months after I ([@dragonwocky](https://github.com/dragonwocky/)) picked the project up, at first extending -upon the original base and later moving to the javascript module system. - -the enhancer wouldn't be anything near to what it is now though without -interested community members testing, coding and ideating features - some are listed as -[contributors](https://github.com/notion-enhancer/notion-enhancer/graphs/contributors) here on github, -but many more have been helping out on discord and in emails. - -individual modules have their original authors attributed. +an enhancer/customiser for the all-in-one productivity workspace notion.so diff --git a/UPDATING.md b/UPDATING.md deleted file mode 100644 index 27c2d83..0000000 --- a/UPDATING.md +++ /dev/null @@ -1,55 +0,0 @@ -# updating - -the enhancer is still a young project, so it's growing quickly. this means a lot of stuff is changing internally -\- and, sometimes, externally. - -previously (<= v0.7.0), the enhancer was a python script with a couple of resource files, and if you -wanted to customise things you had to go in and edit those files. in v0.8.0 there has been a complete -rewrite and overhaul: now this is a program that makes use of a number of modules and a graphical menu. - -## installation dependencies - -previously, python and the node.js `asar` package both had to be manually installed. -node.js is the only current requirement of the enhancer. - -- python is no longer a dependency: keep it, get rid of it - up to you. -- the package installs asar itself in a more scoped environment: if you're confident with - the command line, you can remove the package with `npm remove -g asar`. otherwise, it - won't do any damage to just leave it. - -## keeping the files - -enhancement is done fully from the command prompt. -by default, there are no files for you to worry about. - -you can delete the folder the old version of the enhancer is kept in. -(though you may want to keep the `user.css` file: see below.) - -## user.css styling - -when you first load the enhancer, there's no single file you can edit to see instant changes. -instead, the "custom inserts" module is used: you can use it to pick any javascript or css file anywhere -on your computer and include it every time you load up notion. - -to make your own css file, make sure that your file manager has "show file extensions" ticked, then -create a text document and make sure the name ends in `.css` (e.g. `notion-tweaks.css`). or, just use -the old `user.css` from before the update. - -most of the same css snippets will work, but some (e.g. preview page width) have been moved to the new variable -system, plus new ones have been found. it's a good idea to check what you have against the [tweaks](https://github.com/notion-enhancer/tweaks) -page and the [css theming documentation](DOCUMENTATION.md#variable-theming). - -## configuration - -"what happened to the tray options?" - -"how can I set a custom window visibility toggle hotkey?" - -these options and more have been moved to the graphical menu, which can be opened from the -tray or with `ALT+E` (while the notion app is focused). - -## installing - -just follow the normal [installation steps](README.md#installation) (starting from step 2, you should -already have node.js installed). don't worry about running `cleaner.py`, the new version will detect and overwrite -the old for you. diff --git a/bin.js b/bin.js deleted file mode 100755 index 8a228c1..0000000 --- a/bin.js +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -import os from 'os'; -import { line, cli, files, locations } from './pkg/helpers.js'; -import check from './pkg/check.js'; -import apply from './pkg/apply.js'; -import remove from './pkg/remove.js'; - -const options = cli.options({ - y: 'yes', - n: 'no', - d: 'dev', - h: 'help', - v: 'version', - }), - promptResponse = options.get('yes') - ? 'y' - : options.get('no') - ? 'n' - : undefined; - -function displayHelp() { - const pkg = files.pkgJSON(); - console.info( - cli.help({ - name: pkg.name, - version: pkg.version, - link: pkg.homepage, - commands: [ - ['apply', 'add enhancements to the notion app'], - ['remove', 'return notion to its pre-enhanced/pre-modded state'], - ['check, status', 'check the current state of the notion app'], - ], - options: [ - ['-y, --yes', 'skip prompts'], - ['-n, --no', 'skip prompts'], - ['-d, --dev', 'show detailed error messages (for debug purposes)'], - [ - '--path=', - 'provide a file location to enhance (otherwise auto-picked)', - ], - ['-h, --help', 'display usage information'], - ['-v, --version', 'display version number'], - ], - }) - ); - process.exit(0); -} -if (options.get('help')) displayHelp(); - -function displayVersion() { - const pkg = files.pkgJSON(); - console.info( - `${pkg.name}/${pkg.version} ${ - process.platform - }-${os.arch()}/${os.release()} node/${process.version}` - ); - process.exit(0); -} -if (options.get('version')) displayVersion(); - -function handleError(err) { - if (options.get('dev')) { - console.error( - err.stack - .split('\n') - .map((text, i) => { - text = text.replace(/^ /, ' '); - if (i > 1) return line.chalk.grey(text); - if (i > 0) return text; - const [type, msg] = text.split(/:((.+)|$)/); - return line.chalk.bold.red(`${type}:`) + msg; - }) - .join('\n') - ); - } else - console.error( - line.chalk`{bold.red ERROR:} ${err.message} {grey (run with -d for more information)}` - ); -} - -try { - switch (cli.args()[0]) { - case 'apply': - console.info(line.style.title('[NOTION-ENHANCER] APPLY')); - console.info( - (await apply({ - overwriteOld: promptResponse, - __notion: options.get('path') || locations.notion(), - })) - ? `${line.style.title('SUCCESS')} ${line.chalk.green('✔')}` - : `${line.style.title('CANCELLED')} ${line.chalk.red('✘')}` - ); - break; - case 'remove': - console.info(line.style.title('[NOTION-ENHANCER] REMOVE')); - await remove({ - deleteConfig: promptResponse, - deleteCache: promptResponse, - __notion: options.get('path') || locations.notion(), - }); - console.info(`${line.style.title('SUCCESS')} ${line.chalk.green('✔')}`); - break; - case 'check': - case 'status': - console.info(line.style.title('[NOTION-ENHANCER] CHECK')); - const status = check({ - __notion: options.get('path') || locations.notion(), - }); - line.prev(); - if (options.get('dev')) { - line.forward(24); - console.info(status); - } else { - line.forward(23); - line.write(': ' + status.msg + '\r\n'); - } - break; - default: - displayHelp(); - } -} catch (err) { - handleError(err); -} diff --git a/bin.mjs b/bin.mjs new file mode 100644 index 0000000..fab6e91 --- /dev/null +++ b/bin.mjs @@ -0,0 +1,142 @@ +#!/usr/bin/env node + +/* + * notion-enhancer + * (c) 2021 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +'use strict'; + +import os from 'os'; + +import { pkg, findNotion } from './pkg/helpers.mjs'; +import { line, options, log, help, args, lastSpinner } from './pkg/cli.mjs'; + +import apply from './pkg/apply.mjs'; +import remove from './pkg/remove.mjs'; +import check from './pkg/check.mjs'; + +const manifest = pkg(), + opts = options({ + y: 'yes', + n: 'no', + d: 'dev', + h: 'help', + v: 'version', + }), + promptRes = opts.get('yes') ? 'y' : opts.get('no') ? 'n' : undefined; + +const displayHelp = () => { + help({ + name: manifest.name, + version: manifest.version, + link: manifest.homepage, + commands: [ + ['apply', 'add enhancements to the notion app'], + ['remove', 'return notion to its pre-enhanced/pre-modded state'], + ['check, status', 'check the current state of the notion app'], + ], + options: [ + ['-y, --yes', 'skip prompts'], + ['-n, --no', 'skip prompts'], + ['-d, --dev', 'show detailed error messages (for debug purposes)'], + [ + '--path=', + 'provide a file location to enhance (otherwise auto-picked)', + ], + ['--no-backup', 'skip backup (faster enhancement, but disables removal)'], + ['-h, --help', 'display usage information'], + ['-v, --version', 'display version number'], + ], + }); +}; +if (opts.get('help')) { + displayHelp(); + process.exit(0); +} + +if (opts.get('version')) { + log( + `${manifest.name}/${manifest.version} ${ + process.platform + }-${os.arch()}/${os.release()} node/${process.version}` + ); + process.exit(0); +} + +function handleError(err) { + if (opts.get('dev')) { + const strs = [], + tags = [], + stack = err.stack.split('\n'); + for (let i = 0; i < stack.length; i++) { + const text = stack[i].replace(/^ /, ' '); + if (i > 1) { + strs.push('{grey '); + tags.push(text); + strs.push('}'); + tags.push(''); + } else if (i > 0) { + strs.push(''); + tags.push(text); + } else { + const [type, msg] = text.split(/:((.+)|$)/); + strs.push('{bold.red '); + tags.push(type); + strs.push(':} '); + tags.push(msg); + } + strs.push(i !== stack.length - 1 ? '\n' : ''); + } + log(strs, ...tags); + } else { + log`{bold.red Error:} ${err.message} {grey (run with -d for more information)}`; + } +} + +try { + const notionPath = opts.get('path') || findNotion(); + + switch (args()[0]) { + case 'apply': { + log`{bold.rgb(245,245,245) [NOTION-ENHANCER] APPLY}`; + const res = await apply(notionPath, { + overwritePrevious: promptRes, + takeBackup: opts.get('no-backup') ? false : true, + }); + if (res) { + log`{bold.rgb(245,245,245) SUCCESS} {green ✔}`; + } else log`{bold.rgb(245,245,245) CANCELLED} {red ✘}`; + break; + } + case 'remove': { + log`{bold.rgb(245,245,245) [NOTION-ENHANCER] REMOVE}`; + const res = await remove(notionPath, { delCache: promptRes }); + if (res) { + log`{bold.rgb(245,245,245) SUCCESS} {green ✔}`; + } else log`{bold.rgb(245,245,245) CANCELLED} {red ✘}`; + break; + } + case 'check': + case 'status': { + log`{bold.rgb(245,245,245) [NOTION-ENHANCER] CHECK}`; + const status = check(notionPath); + line.prev(); + if (opts.get('dev')) { + line.forward(24); + console.log(status); + } else { + line.forward(23); + line.write(': ' + status.message + '\r\n'); + } + break; + } + default: + displayHelp(); + } +} catch (err) { + if (lastSpinner) lastSpinner.stop(); + handleError(err); + process.exit(1); +} diff --git a/insert/core/mod.js b/insert/core/mod.js deleted file mode 100644 index 85e242d..0000000 --- a/insert/core/mod.js +++ /dev/null @@ -1,105 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -'use strict'; - -module.exports = { - forced: true, - hidden: true, - id: '30a382b0-42e1-4a00-8c9d-7b2d9886a09a', - name: 'notion-enhancer core', - version: require('../package.json').version, - authors: [ - { - name: 'dragonwocky', - link: 'https://dragonwocky.me/', - avatar: 'https://dragonwocky.me/avatar.jpg', - }, - ], - options: [ - { - key: 'menu.autoresolve', - label: '**menu:** auto-resolve theme conflicts', - desc: - 'enabling a theme will disable any other themes of the same mode (light/dark).', - type: 'toggle', - value: false, - }, - { - key: 'openhidden', - label: 'hide app on open', - desc: - 'app can be made visible by clicking the tray icon or using the hotkey.', - type: 'toggle', - value: false, - }, - { - key: 'maximized', - label: 'auto-maximise windows', - desc: - 'whenever a window is un-hidden or is created it will be maximised.', - type: 'toggle', - value: false, - }, - { - key: 'close_to_tray', - label: 'close window to the tray', - desc: `pressing the × close button will hide the app instead of quitting it.\ - it can be re-shown by clicking the tray icon or using the hotkey.`, - type: 'toggle', - value: true, - platformOverwrite: { - darwin: true, - }, - }, - { - key: 'hotkey', - label: '**hotkey:** toggle all windows', - desc: 'used to hide/show all app windows.', - type: 'input', - value: 'CommandOrControl+Shift+A', - }, - { - key: 'menu_toggle', - label: '**hotkey:** toggle enhancements menu', - desc: 'used to open/close the menu while notion is focused.', - type: 'input', - value: 'Alt+E', - }, - ], - hacks: { - 'renderer/preload.js': ( - __exports, - store, - { web: { whenReady, loadStyleset } } - ) => { - whenReady(() => { - // document.defaultView.addEventListener('keyup', (event) => { - // // additional hotkeys - // if (event.key === 'F5') location.reload(); - // // open menu on hotkey toggle - // if (store().get().menu_toggle) { - // const hotkey = { - // ctrlKey: false, - // metaKey: false, - // altKey: false, - // shiftKey: false, - // ...toKeyEvent(store().menu_toggle), - // }; - // let triggered = true; - // for (let prop in hotkey) - // if ( - // hotkey[prop] !== event[prop] && - // !(prop === 'key' && event[prop] === 'Dead') - // ) - // triggered = false; - // if (triggered) electron.ipcRenderer.send('enhancer:open-menu'); - // } - // }); - }); - }, - }, -}; diff --git a/insert/helpers.js b/insert/helpers.js deleted file mode 100644 index dd71f87..0000000 --- a/insert/helpers.js +++ /dev/null @@ -1,158 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -const os = require('os'), - path = require('path'), - fs = require('fs-extra'), - store = require('./store.js'), - helperCache = {}; - -const enhancements = {}; -enhancements.validate = (mod, others = []) => { - if (!mod.tags) mod.tags = []; - if (!mod.options) mod.options = []; - if ( - [ - typeof mod.id === 'string', - !others.find((m) => m.id === mod.id), - typeof mod.name === 'string', - mod.desc ? typeof mod.desc === 'string' : true, - typeof mod.version === 'string', - Array.isArray(mod.authors), - mod.authors.every( - (author) => - typeof author === 'string' || - (typeof author.name === 'string' && - typeof author.link === 'string' && - typeof author.avatar === 'string') - ), - Array.isArray(mod.tags), - mod.tags.every((tag) => typeof tag === 'string'), - Array.isArray(mod.options), - mod.options.every((opt) => - ['toggle', 'select', 'input', 'file', 'color'].includes(opt.type) - ), - ].every((rule) => rule) - ) - return true; - return false; -}; -enhancements.defaults = (options) => { - const defaults = {}; - for (let opt of options) - defaults[opt.key] = Object.keys(opt.platformOverwrite || {}).some( - (platform) => process.platform === platform - ) - ? opt.platformOverwrite[process.platform] - : Array.isArray(opt.value) - ? opt.value[0] - : opt.value; - return defaults; -}; -enhancements.list = () => { - if (helperCache.enhancements) return helperCache.enhancements; - const get = (repository) => { - if (!fs.existsSync(repository)) return []; - const modules = []; - for (let dir of fs - .readdirSync(repository) - .filter( - (dir) => - !dir.startsWith('.') && - fs.lstatSync(path.join(repository, dir)).isDirectory() - )) { - try { - const mod = require(path.resolve(`${repository}/${dir}/mod.js`)); - if (!enhancements.validate(mod, modules)) throw Error; - mod.defaults = enhancements.defaults(mod.options); - modules.push({ - ...mod, - error: false, - source: path.resolve(`${repository}/${dir}`), - }); - } catch (err) { - modules.push({ error: true, name: dir }); - } - } - return modules.sort((a, b) => a.name.localeCompare(b.name)); - }; - const order = store('mods', '', { order: [] }).get('order'), - modCache = get(`${os.homedir()}/.notion-enhancer/cache`).map((m) => { - m.forced = false; - m.hidden = false; - return m; - }); - helperCache.enhancements = { - core: get(__dirname), - cache: [ - ...modCache.filter((m) => !order.includes(m.id)), - ...order.map((id) => modCache.find((m) => m.id === id)).filter((m) => m), - ], - }; - return helperCache.enhancements; -}; -enhancements.get = (id) => { - const all = [...enhancements.list().core, ...enhancements.list().cache]; - return all.find((m) => m.id === id); -}; -enhancements.styles = (id) => { - if (!helperCache.styles) helperCache.styles = {}; - if (helperCache.styles[id]) return helperCache.styles[id]; - const mod = enhancements.get(id); - helperCache.styles[id] = {}; - if (mod && !mod.error) - for (let sheet of ['global', 'app', 'tabs', 'menu']) - if (fs.pathExistsSync(path.resolve(`${mod.source}/${sheet}.css`))) - helperCache.styles[id][sheet] = `${mod.source}/${sheet}.css`; - return helperCache.styles[id]; -}; -enhancements.enabled = (id) => { - const mod = enhancements.get(id); - if (!mod || mod.error) return false; - return mod.forced || store('mods', 'enabled', { [id]: false }).get(id); -}; - -const web = {}; -web.whenReady = (func = () => {}) => { - return new Promise((res, rej) => { - if (document.readyState !== 'complete') { - document.addEventListener('readystatechange', (event) => { - if (document.readyState === 'complete') { - func(); - res(true); - } - }); - } else { - func(); - res(true); - } - }); -}; -web.createElement = (html) => { - const template = document.createElement('template'); - template.innerHTML = html.trim(); - return template.content.firstElementChild; -}; -web.loadStyleset = (sheet) => { - for (let mod of [ - ...enhancements.list().core, - ...enhancements.list().cache.reverse(), - ]) - if (enhancements.enabled(mod.id)) - if (enhancements.styles(mod.id)[sheet]) - document.head.appendChild( - web.createElement( - `` - ) - ); - return true; -}; - -function notionRequire(path) { - return require(`../../${path}`); -} - -module.exports = { enhancements, web, notionRequire }; diff --git a/insert/init.js b/insert/init.js new file mode 100644 index 0000000..1cd0040 --- /dev/null +++ b/insert/init.js @@ -0,0 +1,11 @@ +/* + * notion-enhancer + * (c) 2020 dragonwocky (https://dragonwocky.me/) + * (https://dragonwocky.me/notion-enhancer) under the MIT license + */ + +'use strict'; + +module.exports = function (target, __exports) { + console.log(target); +}; diff --git a/insert/loader.js b/insert/loader.js deleted file mode 100644 index 49d08a4..0000000 --- a/insert/loader.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -'use strict'; - -const helpers = require('./helpers.js'), - store = require('./store.js'); - -module.exports = function (target, __exports) { - for (let mod of [ - ...helpers.enhancements.list().core, - ...helpers.enhancements.list().cache.reverse(), - ]) - if (helpers.enhancements.enabled(mod.id) && mod.hacks && mod.hacks[target]) - mod.hacks[target]( - __exports, - (defaults = {}) => store('config', mod.id, defaults), - { ...helpers, directStore: store } - ); -}; diff --git a/insert/store.js b/insert/store.js index 33c757b..62ee100 100644 --- a/insert/store.js +++ b/insert/store.js @@ -41,3 +41,7 @@ module.exports = (file, namespace = '', defaults = {}) => { }, }; }; + +function notionRequire(path) { + return require(`../../${path}`); +} diff --git a/insert/theming/app.css b/insert/theming/app.css deleted file mode 100644 index 25b3617..0000000 --- a/insert/theming/app.css +++ /dev/null @@ -1,2017 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * (c) 2020 Arecsu - * (c) 2020 u/zenith_illinois - * (c) 2020 admiraldus (https://github.com/admiraldus) - * (c) 2020 CloudHill - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -/** layout ui **/ - -.notion-frame - .notion-scroller - [style*='env(safe-area-inset-'][style*=' width: 900px'], -.notion-frame - .notion-scroller - [style*='env(safe-area-inset-'][style*=';width: 900px'], -.notion-frame - .notion-scroller - [style*='height: 30vh'] - [style*='pointer-events:'][style*='max-width: 100%; width: 900px'] { - width: var(--theme--page-width) !important; -} -.notion-frame - .notion-scroller - [style*='env(safe-area-inset-'][style*=' width: 100%'], -.notion-frame - .notion-scroller - [style*='height: 30vh'] - [style*='pointer-events:'][style*='max-width: 100%; width: 100%'] { - width: var(--theme--page_full-width) !important; -} -.notion-frame - [style*='padding-left: calc(96px + env(safe-area-inset-left)); padding-right: calc(96px + env(safe-area-inset-right));'] { - padding-left: var(--theme--page-padding) !important; - padding-right: var(--theme--page-padding) !important; -} -[style^='position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; height: 30vh;'], -[style^='position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; height: 30vh;'] - img { - height: var(--theme--page_banner-height) !important; -} - -.notion-peek-renderer > :nth-child(2) { - max-width: var(--theme--preview-width) !important; -} - -.notion-peek-renderer - .notion-scroller.vertical - [style*='padding-left: calc(126px + env(safe-area-inset-left));'] { - padding-left: var(--theme--preview-padding) !important; -} -.notion-peek-renderer - .notion-scroller.vertical - [style*='padding-right: calc(126px + env(safe-area-inset-right));'] { - padding-right: var(--theme--preview-padding) !important; -} -.notion-peek-renderer - .notion-scroller.vertical - [style*='margin-left: calc(126px + env(safe-area-inset-left));'] { - margin-left: var(--theme--preview-padding) !important; -} -.notion-peek-renderer - .notion-scroller.vertical - [style*='margin-right: calc(126px + env(safe-area-inset-right));'] { - margin-right: var(--theme--preview-padding) !important; -} -.notion-peek-renderer .notion-page-content { - padding-left: var(--theme--preview-padding) !important; - padding-right: var(--theme--preview-padding) !important; - width: 100%; -} -.notion-peek-renderer - .notion-scroller.vertical - [style*='position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; height: 20vh;'], -.notion-peek-renderer - .notion-scroller.vertical - [style*='position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; height: 20vh;'] - img { - height: var(--theme--preview_banner-height) !important; -} - -.notion-app-inner, -.notion-cursor-listener, -.notion-frame, -.notion-cursor-listener - > .notion-frame - > .notion-scroller.vertical.horizontal - > .notion-scroller - > div - > div - > :nth-child(1)[style*='background'], -.notion-cursor-listener - > .notion-frame - > .notion-scroller.vertical.horizontal - > .notion-scroller - > div - > div - > .notion-table-view-add-row, -.notion-cursor-listener - > .notion-frame - > .notion-scroller.vertical.horizontal - > .notion-scroller - > div - > div - > :nth-child(5)[style*='background'], -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(1) - > .notion-scroller.vertical.horizontal, -iframe[style*='background-color'], -.notion-table-view > .notion-collection_view-block > div[style*='background'], -.notion-board-view > .notion-collection_view-block > div[style*='background'], -.notion-timeline-view - > .notion-collection_view-block - > div[style*='background'], -.notion-calendar-view - > .notion-collection_view-block - > div[style*='background']:first-child, -.notion-list-view > .notion-collection_view-block > div[style*='background'], -.notion-gallery-view > .notion-collection_view-block > div[style*='background'], -.notion-timeline-view, -.notion-body.dark .notion-timeline-view [style*='background: rgb(47, 52, 55)'], -.notion-body:not(.dark) .notion-timeline-view [style*='background: white'], -.notion-body.dark - .notion-calendar-view - .notion-collection_view_page-block[style*='background: rgb(47, 52, 55)'], -.notion-body:not(.dark) - .notion-calendar-view - .notion-collection_view_page-block[style*='background: white'], -.notion-body.dark - .notion-calendar-view - .notion-collection_view-block[style*='background: rgb(47, 52, 55)'], -.notion-body:not(.dark) - .notion-calendar-view - .notion-collection_view-block[style*='background: white'], -.notion-body.dark - .notion-overlay-container.notion-default-overlay-container - > :nth-child(3) - > div - > :nth-child(2)[style*='background: rgb(47, 52, 55)'], -.notion-body:not(.dark) - .notion-overlay-container.notion-default-overlay-container - > :nth-child(3) - > div - > :nth-child(2)[style*='background: white'], -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > div - > :nth-child(2) - > div[style*='background-color'] { - background: var(--theme--page) !important; -} -.notion-timeline-view - [style*='background-image: linear-gradient'][style*='to right'] { - background: linear-gradient( - to right, - var(--theme--page) 20%, - transparent 100% - ) !important; -} -.notion-timeline-view - [style*='background-image: linear-gradient'][style*='to left'] { - background: linear-gradient( - to left, - var(--theme--page) 20%, - transparent 100% - ) !important; -} - -.notion-sidebar-container, -.notion-workspace-plan-choose, -.notion-workspace-create, -.notion-workspace-invite, -.notion-body.dark - .notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > div - > :nth-child(2) - > div - > div - > :nth-child(2) - > table - td[style*='background: rgb(55, 60, 63)'], -.notion-body:not(.dark) - .notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > div - > :nth-child(2) - > div - > div - > :nth-child(2) - > table - td[style*='background: rgb(247, 246, 243)'], -.notion-body.dark - .notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > div - > :nth-child(1)[style*='background: rgb(55, 60, 63)'], -.notion-body:not(.dark) - .notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > div - > :nth-child(1)[style*='background: rgb(247, 246, 243)'], -.notion-page-template-modal > :nth-child(2), -.notion-page-template-modal - > :nth-child(2) - > :nth-child(2) - > :last-child[role='button'] { - background: var(--theme--sidebar) !important; -} -.notion-cursor-listener - > .notion-sidebar-container - > div - > div - > div - > :nth-child(1)[style*='background'] { - background: var(--theme--sidebar_popout) !important; -} - -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2)[style*='background'], -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(1) - > :nth-child(1) - > :nth-child(3)[style*='background'], -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(1) - > :nth-child(1) - > :nth-child(4), -.notion-peek-renderer - .notion-table-view - > .notion-collection_view-block - > div[style*='background'], -.notion-peek-renderer - .notion-board-view - > .notion-collection_view-block - > div[style*='background'], -.notion-peek-renderer - .notion-timeline-view - > .notion-collection_view-block - > div[style*='background'], -.notion-peek-renderer - .notion-calendar-view - > .notion-collection_view-block - > div[style*='background']:first-child, -.notion-peek-renderer - .notion-list-view - > .notion-collection_view-block - > div[style*='background'], -.notion-peek-renderer - .notion-gallery-view - > .notion-collection_view-block - > div[style*='background'], -.notion-peek-renderer .notion-timeline-view, -.notion-body.dark - .notion-peek-renderer - .notion-timeline-view - [style*='background: rgb(47, 52, 55)'], -.notion-body:not(.dark) - .notion-peek-renderer - .notion-timeline-view - [style*='background: white'], -.notion-body.dark - .notion-peek-renderer - .notion-calendar-view - .notion-collection_view_page-block[style*='background: rgb(47, 52, 55)'], -.notion-body:not(.dark) - .notion-peek-renderer - .notion-calendar-view - .notion-collection_view_page-block[style*='background: white'], -.notion-body.dark - .notion-peek-renderer - .notion-calendar-view - .notion-collection_view-block[style*='background: rgb(47, 52, 55)'], -.notion-body:not(.dark) - .notion-peek-renderer - .notion-calendar-view - .notion-collection_view-block[style*='background: white'] { - background: var(--theme--preview) !important; -} -.notion-peek-renderer { - background: var(--theme--preview_shadow) !important; -} -.notion-peek-renderer - .notion-timeline-view - [style*='background-image: linear-gradient'][style*='to right'] { - background: linear-gradient( - to right, - var(--theme--preview) 20%, - transparent 100% - ) !important; -} -.notion-peek-renderer - .notion-timeline-view - [style*='background-image: linear-gradient'][style*='to left'] { - background: linear-gradient( - to left, - var(--theme--preview) 20%, - transparent 100% - ) !important; -} - -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(1)[style*='background'] { - background: var(--theme--quickfind_shadow) !important; -} - -.notion-overlay-container.notion-default-overlay-container - > div - > div - > :nth-child(2) - > div[style*='background'], -.notion-overlay-container.notion-default-overlay-container - > div - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div[style*='background']:not([style*='font-size: 12px;']), -.notion-overlay-container.notion-default-overlay-container - > div - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > footer - > div[style*='background'], -.notion-overlay-container.notion-default-overlay-container - > div - > div - > div - > :nth-child(2) - > div - > div - > div[style*='background']:not([style*='font-size: 12px;']):not([style*='background: transparent']), -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > div - > :nth-child(2) - > div - > div - > div - > div - > footer - > div, -#notion-app - > div - > :nth-child(3) - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div, -#notion-app - > div - > .notion-overlay-container.notion-default-overlay-container - > :nth-child(4) - > div - > :nth-child(2)[style*='background'], -.notion-onboarding-popup { - background: var(--theme--popout) !important; -} - -.notion-body.dark - [style*='box-shadow: rgba(15, 15, 15, 0.2) 0px 0px 0px 1px inset, rgba(15, 15, 15, 0.1) 0px 1px 2px;'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px inset, rgba(15, 15, 15, 0.1) 0px 1px 2px;'] { - box-shadow: var(--theme--shadow) 0px 0px 0px 1px inset, - var(--theme--shadow) 0px 1px 2px !important; -} - -.notion-dark-theme .notion-workspace-plan-choose img[src='/tutorial/ada-1.png'], -.notion-dark-theme .notion-workspace-create img[src='/tutorial/ada-1.png'], -.notion-dark-theme .notion-workspace-invite img[src='/tutorial/ada-1.png'] { - filter: drop-shadow(1px 1px #fff) drop-shadow(-1px -1px #fff) - drop-shadow(-1px 1px #fff) drop-shadow(1px -1px #fff); -} -.notion-body.dark - [style^='position: absolute;'][style*='z-index: 999; background-color: rgba(55, 60, 63, 0.8);']:empty, -.notion-body.dark - [style^='position: absolute;'][style*='z-index: 999; background-color: rgba(47, 52, 55, 0.8);']:empty, -.notion-body:not(.dark) - [style^='position: absolute;'][style*='z-index: 999; background-color: rgba(247, 246, 243, 0.8);']:empty, -.notion-body:not(.dark) - [style^='position: absolute;'][style*='z-index: 999; background-color: rgba(255, 255, 255, 0.8);']:empty { - background: var(--theme--introduction_overlay) !important; -} - -/* accent */ - -.notion-onboarding-plan-type-personal[style*='box-shadow: rgb(46, 170, 220) 0px 0px 0px 2px, rgba(182, 182, 182, 0.25) 0px 8px 12px'], -.notion-onboarding-plan-type-team[style*='box-shadow: rgb(46, 170, 220) 0px 0px 0px 2px, rgba(182, 182, 182, 0.25) 0px 8px 12px'] { - box-shadow: var(--theme--accent) 0px 0px 0px 2px, - rgba(182, 182, 182, 0.25) 0px 8px 12px !important; -} - -::selection, -.notion-selectable-halo, -.notion-overlay-container.notion-default-overlay-container - > :nth-child(4) - > div[style*='background-color: rgba(46, 170, 220, 0.2)'] { - background: var(--theme--selected) !important; -} - -[style*=' color: rgb(46, 170, 220)'], -[style^='color: rgb(46, 170, 220)'] { - color: var(--theme--accent) !important; -} -[style*='fill: rgb(46, 170, 220)'] { - fill: var(--theme--accent) !important; -} -[style*='background: rgb(46, 170, 220)'], -[style*='background-color: rgb(46, 170, 220)'] { - background: var(--theme--accent) !important; -} -[style*='box-shadow: rgb(46, 170, 220) 0px 0px 0px 2px inset'] { - box-shadow: var(--theme--accent) 0px 0px 0px 2px inset !important; -} -.notion-focusable:focus-within { - box-shadow: var(--theme--accent) 0px 0px 0px 1px inset, - var(--theme--accent) 0px 0px 0px 2px !important; -} -[style*='background: rgb(46, 170, 220)'][style*='color: white'], -[style*='background-color: rgb(46, 170, 220)'][style*='color: white'], -[style*='background: rgb(6, 156, 205)'][style*='color: white'], -[style*='background: rgb(0, 141, 190)'][style*='color: white'] { - color: var(--theme--accent-text) !important; -} -[style*='background: rgb(46, 170, 220)'] [style*='fill: white'], -[style*='background-color: rgb(46, 170, 220)'] [style*='fill: white'], -[style*='background: rgb(6, 156, 205)'] [style*='fill: white'], -[style*='background: rgb(0, 141, 190)'] [style*='fill: white'] { - fill: var(--theme--accent-text) !important; -} -[style*='background: rgba(46, 170, 220, 0.15)'] { - background: var(--theme--accent_semitransparent) !important; -} -[style*='background: rgb(6, 156, 205)'] { - background: var(--theme--accent_button-hover) !important; -} -[style*='background: rgb(0, 141, 190)'] { - background: var(--theme--accent_button-active) !important; -} -.DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day--outside:hover, -#notion-app - .DayPicker:not(.DayPicker--interactionDisabled) - .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end):hover { - background: var(--theme--accent_date-hover) !important; -} - -.notion-body .notion-link:hover { - color: var(--theme--notion_ui_link-hover) !important; -} -.notion-workspace-plan-choose img[src='/images/onboarding/checked.svg'] { - filter: hue-rotate(var(--theme--notion_plan_choose_checkmark_hue-rotate)); -} - -/* databases */ - -.notion-timeline-view .notion-timeline-item, -.notion-board-view .notion-page-block.notion-collection-item > a, -.notion-gallery-view .notion-page-block.notion-collection-item > a, -.notion-calendar-view .notion-page-block.notion-collection-item > a { - background: var(--theme--db_card) !important; -} -.notion-page-block.notion-collection-item > a > [role='button']:hover { - background: var(--theme--db_card-hover) !important; -} -.notion-body.dark - .notion-page-block.notion-collection-item - [style*='background: rgba(255, 255, 255, 0.05)'], -.notion-body:not(.dark) - .notion-page-block.notion-collection-item - [style*='background: rgba(55, 53, 47, 0.024)'] { - background: var(--theme--db_card_preview) !important; -} -.notion-timeline-view > :nth-child(1) > div[style*='background'], -.notion-timeline-view - > :nth-child(3) - > :nth-child(2) - div[style*='background']:not([style*='background: rgb(211, 79, 67)']), -.notion-body.dark - .notion-calendar-view - .notion-collection_view_page-block[style*='background: rgb(55, 60, 63)'], -.notion-body:not(.dark) - .notion-calendar-view - .notion-collection_view_page-block[style*='background: rgb(247, 246, 243)'], -.notion-body.dark - .notion-calendar-view - .notion-collection_view-block[style*='background: rgb(55, 60, 63)'], -.notion-body:not(.dark) - .notion-calendar-view - .notion-collection_view-block[style*='background: rgb(247, 246, 243)'] { - background: var(--theme--db_weekend) !important; -} -.notion-calendar-view-day[style*='background: rgb(235, 87, 87)'], -.DayPicker-Day--today:not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end)::after, -.notion-timeline-view [style*='background: rgb(211, 79, 67)'] { - background: var(--theme--db_today) !important; - color: var(--theme--db_today-text) !important; -} -.DayPicker-Day--today:not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end) { - color: var(--theme--db_today-text) !important; -} -.notion-timeline-view > :nth-child(1) > div[style*='border-right'] { - border-right: 1px solid var(--theme--timeline_divider_thin) !important; -} -.notion-timeline-view .collectionTimelineArrowLeft, -.notion-timeline-view .collectionTimelineArrowRight { - fill: var(--theme--timeline_arrow) !important; -} -.notion-timeline-view - > :nth-child(2) - > :not(.notion-timeline-item-row) - > div - > div { - background: var(--theme--timeline_arrow_box) !important; - border: 1px solid var(--theme--timeline_arrow) !important; -} -.notion-body.dark - .notion-timeline-view - > :nth-child(2) - > :not(.notion-timeline-item-row) - > div - > div[style*='background: rgb(202, 204, 206)'], -.notion-body:not(.dark) - .notion-timeline-view - > :nth-child(2) - > :not(.notion-timeline-item-row) - > div - > div[style*='background: rgba(55, 53, 47, 0.8)'] { - background: var(--theme--timeline_arrow_box-hover) !important; -} - -/* interactive + block ui */ - -.notion-to_do-block .checkboxSquare { - background: var(--theme--checkbox) !important; -} -.notion-to_do-block .checkboxSquare path { - fill: var(--theme--checkbox-text) !important; -} -.notion-to_do-block [role='button']:hover, -.notion-to_do-block [role='button']:hover .checkboxSquare, -.notion-to_do-block [role='button']:hover .check { - background: var(--theme--checkbox-hover) !important; -} -.notion-to_do-block [role='button']:hover .checkboxSquare path, -.notion-to_do-block [role='button']:hover .check polygon { - fill: var(--theme--checkbox-hover-text) !important; -} -.notion-to_do-block [role='button']:not(:hover) .check { - background: var(--theme--checkbox-active) !important; -} -.notion-to_do-block [role='button']:not(:hover) .check polygon { - fill: var(--theme--checkbox-active-text) !important; -} - -[role='button'] - > [style*='height: 14px; width: 26px;'][style*='background: rgb(46, 170, 220)'] { - background: var(--theme--toggle_on) !important; -} -[role='button'] - > [style*='height: 14px; width: 26px;']:not([style*='background: rgb(46, 170, 220)']) { - background: var(--theme--toggle_off) !important; -} -[role='button'] - > [style*='height: 14px; width: 26px;'] - > [style*='background: white'] { - background: var(--theme--toggle_dot) !important; -} - -.notion-focusable, -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > div - > div - > :nth-child(2)[style*='background:'], -.notion-overlay-container.notion-default-overlay-container - > div - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > div - > :nth-child(1) - > :nth-child(1) - > [style*='border-radius: 3px; height: 28px;']:not([style*='background: rgba(46, 170, 220, 0.15)']), -.notion-workspace-invite - [style*='display: flex; flex-wrap: wrap; align-items: flex-start; width: 100%; min-height: 34px;'][style*='height: 100px;'], -.notion-body.dark - [style*='box-shadow: rgba(15, 15, 15, 0.2) 0px 0px 0px 1px inset'][style*='cursor: text;'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px inset'][style*='cursor: text;'] { - background: var(--theme--input) !important; -} -.notion-body.dark - [style*='box-shadow: rgba(15, 15, 15, 0.2) 0px 0px 0px 1px inset'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px inset'] { - box-shadow: var(--theme--input-border) 0px 0px 0px 1px inset !important; -} -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > div - > div - > :nth-child(2):hover:not([style*='background: rgba(46, 170, 220, 0.15)']):not([placeholder='Untitled']) { - background: var(--theme--input-hover) !important; -} -[style*='[boolean-start] 60px [boolean-end property-start] 120px [property-end opererator-start] 110px [operator-end value-start] auto [value-end menu-start] 32px [menu-end]'] - [role='button'][style*='background:'], -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > .notion-scroller.vertical - [style*='display: inline-flex;'][style*='margin-right: 8px; max-width: 180px;'][role='button'] { - background: var(--theme--filter) !important; -} -[style*='[boolean-start] 60px [boolean-end property-start] 120px [property-end opererator-start] 110px [operator-end value-start] auto [value-end menu-start] 32px [menu-end]'] - [style*='grid-column: property-start / value-end;'] { - background: var(--theme--sub_filter) !important; - box-shadow: var(--theme--divider) 0px 0px 0px 1px !important; -} -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > :nth-child(1) - > div[style*='min-height: 34px;'], -.notion-overlay-container.notion-default-overlay-container - > :nth-child(4) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > :nth-child(1) - > div[style*='min-height: 34px;'] { - background: var(--theme--tag_select) !important; -} - -.notion-image-block [style*='background: rgba(0, 0, 0, 0.6);'], -.notion-bookmark-block [style*='background: rgba(0, 0, 0, 0.6);'] { - background: var(--theme--button_semitransparent) !important; -} - -.notion-body.dark - [role='button'][style*='background: rgb(71, 76, 80)']:not([style*='min-height: 40px']), -.notion-body:not(.dark) - [role='button'][style*='background: rgba(55, 53, 47, 0.08)'], -.notion-body.dark - .notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > div - > :nth-child(2) - > div - > div - > :nth-child(2) - > table - > tbody - > tr:nth-child(19) - > td:nth-child(1) - > span - > div[style*='background: rgb(71, 76, 80)'], -.notion-body:not(.dark) - .notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > div - > :nth-child(2) - > div - > div - > :nth-child(2) - > table - > tbody - > tr:nth-child(19) - > td:nth-child(1) - > span - > div[style*='background: rgba(55, 53, 47, 0.08)'], -.notion-body.dark - .notion-sidebar-container - [role='button'] - > [style*='background: rgb(71, 76, 80)'], -.notion-body:not(.dark) - .notion-sidebar-container - [role='button'] - > [style*='background: rgba(55, 53, 47, 0.08)'] { - background: var(--theme--button-hover) !important; -} -.notion-body.dark [role='button'][style*='background: rgb(63, 68, 71)'], -.notion-body:not(.dark) - [role='button'][style*='background: rgba(55, 53, 47, 0.16)'], -.notion-body.dark - .notion-sidebar-container - [role='button'] - > [style*='background: rgb(63, 68, 71)'], -.notion-body:not(.dark) - .notion-sidebar-container - [role='button'] - > [style*='background: rgba(55, 53, 47, 0.16)'] { - background: var(--theme--button-active) !important; -} - -.notion-text-mention-token[style*='color:#EB5757'] { - color: var(--theme--reminder) !important; -} -.notion-text-mention-token[style*='color:#EB5757'] svg { - fill: var(--theme--reminder) !important; -} - -.notion-body.dark [role='button'][style*='background: rgb(47, 52, 55)'], -.notion-body:not(.dark) - :not([style*='[boolean-start] 60px [boolean-end property-start] 120px [property-end opererator-start] 110px [operator-end value-start] auto [value-end menu-start] 32px [menu-end]']) - > :not([style*='[boolean-start] 60px [boolean-end property-start] 120px [property-end opererator-start] 110px [operator-end value-start] auto [value-end menu-start] 32px [menu-end]']):not(.notion-login) - > [role='button'][style*='background: white']:not(.notion-help-button):not([style*='margin-right: 8px; max-width: 180px;']):not(.notion-onboarding-plan-type-personal):not(.notion-onboarding-plan-type-team), -.notion-cursor-listener - > .notion-frame - > .notion-scroller.vertical.horizontal - > :nth-child(1) - > :nth-child(1) - > :nth-child(3) - > div[style*='background'], -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > .notion-scroller.vertical - > :nth-child(1) - > :nth-child(1) - > :nth-child(3) - > div, -.notion-selectable.notion-page-block.notion-collection-item - > a - > [role='button'] - > :nth-child(1) - > :nth-child(3) { - background: var(--theme--expand) !important; - color: var(--theme--expand-text) !important; - fill: var(--theme--expand_icon) !important; -} -.notion-body.dark - [role='button'][style*='background: rgb(47, 52, 55)'] - [style*='fill']:not(.plus), -.notion-body:not(.dark) - :not([style*='[boolean-start] 60px [boolean-end property-start] 120px [property-end opererator-start] 110px [operator-end value-start] auto [value-end menu-start] 32px [menu-end]']) - > [role='button'][style*='background: white']:not(.notion-help-button) - [style*='fill']:not(.plus):not(.appleLogo), -.notion-cursor-listener - > .notion-frame - > .notion-scroller.vertical.horizontal - > :nth-child(1) - > :nth-child(1) - > :nth-child(3) - > div[style*='background'] - [style*='fill'], -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > .notion-scroller.vertical - > :nth-child(1) - > :nth-child(1) - > :nth-child(3) - > div - [style*='fill'], -.notion-selectable.notion-page-block.notion-collection-item - > a - > [role='button'] - > :nth-child(1) - > :nth-child(3) - [style*='fill'] { - color: var(--theme--expand-text) !important; - fill: var(--theme--expand_icon) !important; -} - -.notion-body.dark - [role='button'][style*='background: rgb(98, 102, 104)']:not(.notion-help-button), -.notion-body:not(.dark) - [role='button'][style*='background: rgb(239, 239, 238)']:not(.notion-help-button) { - background: var(--theme--expand-hover) !important; -} -.notion-body.dark - [role='button'][style*='background: rgb(120, 123, 123)']:not(.notion-help-button), -.notion-body:not(.dark) - [role='button'][style*='background: rgb(223, 223, 222)']:not(.notion-help-button) { - background: var(--theme--expand-active) !important; -} - -.notion-collection-item - [role='button'] - > div - > [style*='font-weight: 500; border-bottom: 1px solid'], -.notion-divider-block > div > [style*='border-bottom: 1px solid'] { - border-bottom: 1px solid var(--theme--divider) !important; -} -.notion-collection_view-block - > [style*='height: 44px; z-index: 82; display: flex; width: 100%; border-top: 1px solid'], -.notion-collection_view_page-block - > [style*='height: 44px; z-index: 82; display: flex; width: 100%; border-top: 1px solid'], -.notion-collection_view-block[style*='border-top: 1px solid'], -.notion-collection_view_page-block[style*='border-top: 1px solid'] { - border-top: 1px solid var(--theme--divider) !important; -} -.notion-body.dark - [style*='height: 1px;'][style*='background: rgba(255, 255, 255, 0.07);'], -.notion-body.dark - [style*='width: 4px; height: 100%; background: rgba(255, 255, 255, 0.14);'], -.notion-body:not(.dark) - [style*='height: 1px;'][style*='background: rgba(55, 53, 47, 0.09);'], -.notion-body:not(.dark) - [style*='width: 4px; height: 100%; background: rgba(55, 53, 47, 0.16);'] { - background: var(--theme--divider) !important; -} -.notion-workspace-create - > :nth-child(2) - > :nth-child(2) - > div - > [style*='margin-top: 16px;'] - > [role='button'] { - box-shadow: var(--theme--divider) 0px 0px 0px 1px !important; -} -.notion-table-view > .notion-collection_view-block > :first-child, -.notion-table-view > .notion-collection_view_page-block > :first-child { - box-shadow: var(--theme--divider) -3px 0px 0px, - var(--theme--divider) 0px 1px 0px !important; -} -.notion-calendar-view > .notion-collection_view-block > :first-child, -.notion-calendar-view > .notion-collection_view_page-block > :first-child { - box-shadow: var(--theme--divider) 0px 1px 0px inset !important; -} -.notion-calendar-view > .notion-collection_view-block > :nth-child(3), -.notion-calendar-view > .notion-collection_view_page-block > :nth-child(3) { - box-shadow: var(--theme--divider) -1px 0px 0px !important; -} -.notion-calendar-header-days { - box-shadow: var(--theme--divider) 0px 1px 0px !important; -} -.notion-calendar-view [style*='border-right: 1px solid'], -.notion-table-view [style*='border-right: 1px solid'] { - border-right: 1px solid var(--theme--divider) !important; -} -.notion-calendar-view [style*='border-left: 1px solid'], -.notion-table-view [style*='border-left: 1px solid'] { - border-left: 1px solid var(--theme--divider) !important; -} -.notion-calendar-view [style*='border-top: 1px solid'], -.notion-table-view [style*='border-top: 1px solid'] { - border-top: 1px solid var(--theme--divider) !important; -} -.notion-calendar-view [style*='border-bottom: 1px solid'], -.notion-table-view [style*='border-bottom: 1px solid'] { - border-bottom: 1px solid var(--theme--divider) !important; -} -.notion-table-view .notion-collection-item:last-child { - border-bottom: none !important; -} -.notion-gallery-view > div > :last-child { - box-shadow: var(--theme--divider) 0px 0px 0px 1px inset !important; -} -.notion-body.dark [style*='border-top: 1px solid rgba(255, 255, 255, 0.14);'], -.notion-body.dark [style*='border-top: 1px solid rgba(255, 255, 255, 0.07);'], -.notion-body:not(.dark) [style*='border-top: 1px solid rgba(55, 53, 47, 0.06)'], -.notion-body:not(.dark) - [style*='border-top: 1px solid rgba(55, 53, 47, 0.09);'], -.notion-body:not(.dark) - [style*='border-top: 1px solid rgba(55, 53, 47, 0.16);'] { - border-top: 1px solid var(--theme--divider) !important; -} -.notion-body.dark - [style*='border-bottom: 1px solid rgba(255, 255, 255, 0.14);'], -.notion-body.dark - [style*='border-bottom: 1px solid rgba(255, 255, 255, 0.07);'], -.notion-body.dark [style*='border-bottom: 0.05em solid rgba(255,255,255,0.3);'], -.notion-body:not(.dark) - [style*='border-bottom: 1px solid rgba(55, 53, 47, 0.16);'], -.notion-body:not(.dark) - [style*='border-bottom: 1px solid rgba(55, 53, 47, 0.09);'], -.notion-body:not(.dark) - [style*='border-bottom:0.05em solid rgba(55,53,47,0.25);'] { - border-bottom: 1px solid var(--theme--divider) !important; -} -.notion-body.dark [style*='border-left: 1px solid rgba(255, 255, 255, 0.14);'], -.notion-body.dark [style*='border-left: 1px solid rgba(255, 255, 255, 0.07);'], -.notion-body:not(.dark) - [style*='border-left: 1px solid rgba(55, 53, 47, 0.06)'], -.notion-body:not(.dark) - [style*='border-left: 1px solid rgba(55, 53, 47, 0.09);'], -.notion-body:not(.dark) - [style*='border-left: 1px solid rgba(55, 53, 47, 0.16);'] { - border-left: 1px solid var(--theme--divider) !important; -} -.notion-body.dark [style*='border-right: 1px solid rgba(255, 255, 255, 0.14);'], -.notion-body.dark [style*='border-right: 1px solid rgba(255, 255, 255, 0.07);'], -.notion-body:not(.dark) - [style*='border-right: 1px solid rgba(55, 53, 47, 0.06)'], -.notion-body:not(.dark) - [style*='border-right: 1px solid rgba(55, 53, 47, 0.09);'], -.notion-body:not(.dark) - [style*='border-right: 1px solid rgba(55, 53, 47, 0.16);'] { - border-right: 1px solid var(--theme--divider) !important; -} -.notion-body.dark [style*='border: 1px solid rgba(255, 255, 255, 0.14);'], -.notion-body.dark [style*='border: 1px solid rgba(255, 255, 255, 0.07);'], -.notion-body:not(.dark) [style*='border: 1px solid rgba(55, 53, 47, 0.09)'], -.notion-body:not(.dark) [style*='border: 1px solid rgba(55, 53, 47, 0.16);'] { - border: 1px solid var(--theme--divider) !important; -} -.notion-body.dark [style*='border-color: rgba(255, 255, 255, 0.07);'], -.notion-body.dark [style*='border-color:rgba(255,255,255,0.4);'], -.notion-body:not(.dark) [style*='border-color:rgba(55,53,47,0.4);'], -.notion-body:not(.dark) [style*='border-color: rgba(55, 53, 47, 0.09);'], -.notion-body:not(.dark) [style*='border-color: rgba(55, 53, 47, 0.06);'] { - border-color: var(--theme--divider) !important; -} -.notion-body.dark - [style*='box-shadow: rgba(255, 255, 255, 0.07) 0px -1px 0px;'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.09) 0px -1px 0px;'] { - box-shadow: var(--theme--divider) 0px -1px 0px !important; -} -.notion-body.dark [style*='box-shadow: rgba(255, 255, 255, 0.07) 0px 1px 0px;'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.09) 0px 1px 0px;'] { - box-shadow: var(--theme--divider) 0px 1px 0px !important; -} -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > div - > div - > .notion-record-icon.notranslate { - box-shadow: var(--theme--divider) 0px 0px 0px 1px inset !important; -} - -.notion-embed-block > div > div[style*='background:'], -.notion-image-block > div > div[style*='background:'], -.notion-video-block > div > div[style*='background:'], -.notion-codepen-block > div > div[style*='background:'], -.notion-typeform-block > div > div[style*='background:'], -.notion-whimsical-block > div > div[style*='background:'], -.notion-loom-block > div > div[style*='background:'], -.notion-pdf-block > div > div[style*='background:'], -.notion-figma-block > div > div[style*='background:'], -.notion-miro-block > div > div[style*='background:'], -.notion-invision-block > div > div[style*='background:'], -.notion-framer-block > div > div[style*='background:'], -.notion-gist-block > div > div[style*='background:'], -.notion-maps-block > div > div[style*='background:'], -.notion-abstract-block > div > div[style*='background:'], -.notion-tweet-block > div > div[style*='background:'], -.notion-drive-block > div > div[style*='background:'] { - background: var(--theme--embed_block) !important; -} -.notion-equation-block > div > div[style*='background'] { - background: var(--theme--equation_block) !important; -} -.notion-body.dark - .notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div[style*='background: rgba(15, 15, 15, 0.3)'], -.notion-body:not(.dark) - .notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div[style*='background: rgba(242, 241, 238, 0.6)'] { - background: var(--theme--equation_editor) !important; -} -.notion-text-equation-token { - background: var(--theme--equation_inline) !important; - color: var(--theme--equation_inline-text) !important; -} -[role='alert'][style*='background:'] { - background: var(--theme_dark--equation_error_block) !important; -} -[role='alert'][style*='color:'] { - color: var(--theme_dark--equation_error-text) !important; -} -[role='alert'][style*='color:'][style*='background:'] { - color: var(--theme_dark--equation_error_inline-text) !important; -} - -.notion-frame [style*='background: rgba(0, 0, 0, 0.4)'][style*='color: white'], -.notion-peek-renderer - [style*='background: rgba(0, 0, 0, 0.4)'][style*='color: white'] { - background: var(--theme--reposition_cover) !important; - color: var(--theme--reposition_cover-text) !important; -} -.notion-block-resizer > div > div { - background: var(--theme--resizer) !important; - border: 1px solid var(--theme--resizer-border) !important; -} -.notion-block-resizer > div > svg { - fill: var(--theme--resizer) !important; - stroke: var(--theme--resizer-border) !important; -} - -.notion-overlay-container.notion-default-overlay-container - > div - > div - > div - > :nth-child(2) - > div - > div - > div[style*='background'][style*='font-size: 12px;'] { - background: var(--theme--tooltip) !important; - color: var(--theme--tooltip-text) !important; -} -.notion-overlay-container.notion-default-overlay-container - > div - > div - > div - > :nth-child(2) - > div - > div - > div[style*='background'][style*='font-size: 12px;'] - [style^='color:'] { - color: var(--theme--tooltip-text_grey) !important; -} - -.notion-help-button { - background: var(--theme--help) !important; -} -.notion-help-button:hover { - background: var(--theme--help-hover) !important; -} - -.notion-space-settings - [role='button'][style*='color: rgb(235, 87, 87);']:not([style*='background: rgb(253, 245, 242)']):not([style*='background: rgb(251, 235, 232)']), -.notion-overlay-container.notion-default-overlay-container - > :nth-child(3) - > div - > :nth-child(2) - > div - > :nth-child(3) - > div - > :nth-child(1)[role='button'][style*='color: rgb(235, 87, 87);'] { - color: var(--theme--settings_danger_button-text) !important; - border: 1px solid var(--theme--settings_danger_button-border) !important; -} -.notion-space-settings - [role='button'][style*='color: rgb(235, 87, 87);']:not([style*='background: rgb(251, 235, 232)']):hover, -.notion-overlay-container.notion-default-overlay-container - > :nth-child(3) - > div - > :nth-child(2) - > div - > :nth-child(3) - > div - > :nth-child(1)[role='button'][style*='color: rgb(235, 87, 87);']:hover { - background: var(--theme--settings_danger_button-hover) !important; -} - -/** scrollbars **/ - -::-webkit-scrollbar-track { - background: var(--theme--scrollbar_track) !important; -} -::-webkit-scrollbar-corner { - background: var(--theme--scrollbar_track) !important; -} -::-webkit-scrollbar-thumb { - background: var(--theme--scrollbar_thumb) !important; -} -::-webkit-scrollbar-thumb:hover { - background: var(--theme--scrollbar_thumb-hover) !important; -} - -/** typography **/ - -[style*='Segoe UI'] { - font-family: var(--theme--font_sans) !important; -} -[style*='Georgia'] { - font-family: var(--theme--font_serif) !important; -} -[style*='iawriter-mono'] { - font-family: var(--theme--font_mono) !important; -} -[style*='SFMono-Regular'] { - font-family: var(--theme--font_code) !important; -} -.notion-selectable.notion-quote-block div[spellcheck='true'] { - font-family: var(--theme--font_quote) !important; -} -[placeholder='Heading 1'], -[placeholder='Heading 2'], -[placeholder='Heading 3'] { - font-family: var(--theme--font_headings) !important; -} - -[style*='font-size: 40px'] { - font-size: var(--theme_dark--font_title-size) !important; -} -[placeholder='Heading 1'] { - font-size: var(--theme_dark--font_heading1-size) !important; -} -[placeholder='Heading 2'] { - font-size: var(--theme_dark--font_heading2-size) !important; -} -[placeholder='Heading 3'] { - font-size: var(--theme_dark--font_heading3-size) !important; -} -[style*='font-size: 16px'] { - font-size: var(--theme_dark--font_body-size) !important; -} -[style*='font-size: 1.2em'] { - font-size: var(--theme_dark--font_quote-size) !important; -} -[style*='font-size: 85%'], -[style*='font-size:85%'] { - font-size: var(--theme_dark--font_code-size) !important; -} -[style*='font-size: 14px'] { - font-size: var(--theme_dark--font_ui-size) !important; -} -[style*='font-size: 11.5px'] { - /* sidebar titles, block copy & caption buttons */ - font-size: var(--theme_dark--font_ui_small-size) !important; -} -[style*='font-size: 11px'] { - font-size: var(--theme_dark--font_popout_title-size) !important; -} -[style*='font-size: 12px'] { - font-size: var(--theme_dark--font_description-size) !important; -} -[style*='font-size: 16.8px'] { - font-size: var(--theme_dark--font_callout_icon-size) !important; -} -[style*='font-size: 20px'] { - font-size: var(--theme_dark--font_help_icon-size) !important; -} - -.notion-page-content .notion-selectable.notion-text-block { - line-height: var(--theme--text_block-line_height) !important; - margin-top: var(--theme--text_block-margin_top) !important; -} - -.notion-body.dark [style*='fill: rgba(202, 204, 206, 0.6);'], -.notion-body:not(.dark) [style*='fill: rgba(55, 53, 47, 0.4);'] { - fill: var(--theme--icon) !important; -} -.notion-body.dark [style*='fill: rgb(202, 204, 206);'], -.notion-body:not(.dark) [style*='fill: rgba(55, 53, 47, 0.8);'] { - fill: var(--theme--icon_topbar) !important; -} - -.notion-body.dark [style*=' color: rgba(255, 255, 255, 0.9);'], -.notion-body.dark [style^='color: rgba(255, 255, 255, 0.9);'], -.notion-body:not(.dark) - :not(.notion-login) - > [style*=' color: rgb(55, 53, 47);'], -.notion-body:not(.dark) [style^='color: rgb(55, 53, 47);'] { - color: var(--theme--text) !important; -} -.notion-body.dark [style*='fill: rgba(255, 255, 255, 0.9);'], -.notion-body:not(.dark) [style*='fill: rgb(55, 53, 47);'] { - fill: var(--theme--text) !important; -} -.notion-body.dark [style*='border-bottom: 2px solid rgba(255, 255, 255, 0.9);'], -.notion-body:not(.dark) [style*='border-bottom: 2px solid rgb(55, 53, 47);'] { - border-bottom: 2px solid var(--theme--text) !important; -} -.notion-body.dark [style*='caret-color: rgba(255, 255, 255, 0.9);'], -.notion-body:not(.dark) [style*='caret-color: rgb(55, 53, 47);'] { - caret-color: var(--theme--text) !important; -} -[role='button'][style*='color: rgb(165, 165, 165);'], -.notion-body.dark [style*='color: rgba(255, 255, 255, 0.6);'], -.notion-body:not(.dark) [style*='color: rgba(55, 53, 47, 0.6);'] { - color: var(--theme--text_property) !important; -} -.notion-body.dark [style*='color: rgba(255, 255, 255, 0.4);'], -.notion-body:not(.dark) [style*='color: rgba(55, 53, 47, 0.4);'] { - color: var(--theme--text_placeholder) !important; - -webkit-text-fill-color: var(--theme--text_placeholder) !important; -} -.notion-body.dark [style*='fill: rgba(202, 204, 206, 0.4);'], -.notion-body:not(.dark) [style*='fill: rgba(55, 53, 47, 0.3);'] { - fill: var(--theme--text_pseudo) !important; -} -.notion-sidebar-container > :first-child { - color: var(--theme--text_sidebar) !important; -} -.notion-sidebar .dots, -.notion-sidebar .plus { - fill: var(--theme--text_sidebar) !important; -} - -/** code **/ - -.notion-page-content [style*='color:#EB5757']:not(.notion-text-mention-token) { - background: var(--theme--code_inline) !important; - color: var(--theme--code_inline-text) !important; -} - -.notion-code-block > div > div { - background: var(--theme--code) !important; -} -.notion-code-block > div { - color: var(--theme--code_plain) !important; -} -.notion-code-block .token.function { - color: var(--theme--code_function) !important; -} -.notion-code-block .token.parameter { - color: var(--theme--code_parameter) !important; -} -.notion-code-block .token.keyword { - color: var(--theme--code_keyword) !important; -} -.notion-code-block .token.constant { - color: var(--theme--code_constant) !important; -} -.notion-code-block .token.tag { - color: var(--theme--code_tag) !important; -} -.notion-code-block .token.operator { - color: var(--theme--code_operator) !important; - background: transparent !important; -} -.notion-code-block .token.important { - color: var(--theme--code_important) !important; -} -.notion-code-block .token.regex { - color: var(--theme--code_regex) !important; -} -.notion-code-block .token.property { - color: var(--theme--code_property) !important; -} -.notion-code-block .token.builtin { - color: var(--theme--code_builtin) !important; -} -.notion-code-block .token.class-name { - color: var(--theme--code_class-name) !important; -} -.notion-code-block .token.attr-name { - color: var(--theme--code_attr-name) !important; -} -.notion-code-block .token.attr-value { - color: var(--theme--code_attr-value) !important; -} -.notion-code-block .token.selector { - color: var(--theme--code_selector) !important; -} -.notion-code-block .token.id { - color: var(--theme--code_id) !important; -} -.notion-code-block .token.class { - color: var(--theme--code_class) !important; -} -.notion-code-block .token.pseudo-element { - color: var(--theme--code_pseudo-element) !important; -} -.notion-code-block .token.pseudo-class { - color: var(--theme--code_pseudo-class) !important; -} -.notion-code-block .token.attribute { - color: var(--theme--code_attribute) !important; -} -.notion-code-block .token.value { - color: var(--theme--code_value) !important; -} -.notion-code-block .token.unit { - color: var(--theme--code_unit) !important; -} -.notion-code-block .token.comment { - color: var(--theme--code_comment) !important; -} -.notion-code-block .token.punctuation { - color: var(--theme--code_punctuation) !important; -} -.notion-code-block .token.annotation { - color: var(--theme--code_annotation) !important; -} -.notion-code-block .token.decorator { - color: var(--theme--code_decorator) !important; -} -.notion-code-block .token.doctype { - color: var(--theme--code_doctype) !important; -} -.notion-code-block .token.number { - color: var(--theme--code_number) !important; -} -.notion-code-block .token.string { - color: var(--theme--code_string) !important; -} -.notion-code-block .token.boolean { - color: var(--theme--code_boolean) !important; -} - -/** colours **/ - -.notion-body.dark [style*='background: rgb(80, 85, 88)']:not([role='button']), -.notion-body:not(.dark) - [style*='background: rgba(206, 205, 202, 0.5)']:not([role='button']) { - background: var(--theme--tag_default) !important; - color: var(--theme--tag_default-text) !important; -} -.notion-body.dark - [style*='color: rgba(255, 255, 255, 0.6); background: rgb(80, 85, 88)']:not([role='button']), -.notion-body:not(.dark) - [style*='color: rgba(55, 53, 47, 0.6); background: rgba(206, 205, 202, 0.5)']:not([role='button']) { - background: var(--theme--tag_plan) !important; - color: var(--theme--tag_plan-text) !important; -} -[style*='background: rgb(235, 87, 87); color: white; border-radius: 3px;']:not([role='button']) { - background: var(--theme--tag_new) !important; - color: var(--theme--tag_new-text) !important; -} - -.notion-body.dark [style*='color:rgba(151,154,155,0.95)'], -.notion-body.dark - [style*='color: rgba(255, 255, 255, 0.6); fill: rgba(255, 255, 255, 0.6);'], -.notion-body:not(.dark) [style*='color:rgb(155,154,151)'], -.notion-body:not(.dark) - [style*='color: rgba(55, 53, 47, 0.6); fill: rgba(55, 53, 47, 0.6);'] { - color: var(--theme--text_grey) !important; - fill: var(--theme--text_grey) !important; -} -.notion-body.dark [style*='background:rgb(69,75,78)'], -.notion-body:not(.dark) [style*='background:rgb(235,236,237)'] { - background: var(--theme--highlight_grey) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(69,75,78)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(235,236,237)'] { - color: var(--theme--highlight_grey-text) !important; -} -.notion-body.dark - [style*='color:rgba(151,154,155,0.95)'] - [style*='background:rgb(69,75,78)'], -.notion-body.dark - [style*='color: rgba(255, 255, 255, 0.6); fill: rgba(255, 255, 255, 0.6);'] - [style*='background:rgb(69,75,78)'], -.notion-body:not(.dark) - [style*='color:rgb(155,154,151)'] - [style*='background:rgb(235,236,237)'], -.notion-body:not(.dark) - [style*='color: rgba(55, 53, 47, 0.6); fill: rgba(55, 53, 47, 0.6);'] - [style*='background:rgb(235,236,237)'] { - background: var(--theme--highlight_grey) !important; - color: var(--theme--text_grey) !important; - fill: var(--theme--text_grey) !important; -} -.notion-body.dark [style*='background: rgb(69, 75, 78)'], -.notion-body:not(.dark) [style*='background: rgb(235, 236, 237)'] { - background: var(--theme--block_grey) !important; - color: var(--theme--block_grey-text) !important; -} -.notion-body.dark [style*='background: rgba(151, 154, 155, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(140, 46, 0, 0.2)'] { - background: var(--theme--tag_grey) !important; - color: var(--theme--tag_grey-text) !important; -} -.notion-body.dark [style*='background: rgba(69, 75, 78, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(235, 236, 237, 0.3)'] { - background: var(--theme--callout_grey) !important; - color: var(--theme--callout_grey-text) !important; -} - -.notion-body.dark [style*='color:rgb(147,114,100)'], -.notion-body.dark - [style*='color: rgb(147, 114, 100); fill: rgb(147, 114, 100);'], -.notion-body:not(.dark) [style*='color:rgb(100,71,58)'], -.notion-body:not(.dark) - [style*='color: rgb(100, 71, 58); fill: rgb(100, 71, 58);'] { - color: var(--theme--text_brown) !important; - fill: var(--theme--text_brown) !important; -} -.notion-body.dark [style*='background:rgb(67,64,64)'], -.notion-body:not(.dark) [style*='background:rgb(233,229,227)'] { - background: var(--theme--highlight_brown) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(67,64,64)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(233,229,227)'] { - color: var(--theme--highlight_brown-text) !important; -} -.notion-body.dark - [style*='color:rgb(147,114,100)'] - [style*='background:rgb(67,64,64)'], -.notion-body.dark - [style*='color: rgb(147, 114, 100); fill: rgb(147, 114, 100);'] - [style*='background:rgb(67,64,64)'], -.notion-body:not(.dark) - [style*='color:rgb(100,71,58)'] - [style*='background:rgb(233,229,227)'], -.notion-body:not(.dark) - [style*='color: rgb(100, 71, 58); fill: rgb(100, 71, 58);'] - [style*='background:rgb(233,229,227)'] { - background: var(--theme--highlight_brown) !important; - color: var(--theme--text_brown) !important; - fill: var(--theme--text_brown) !important; -} -.notion-body.dark [style*='background: rgb(67, 64, 64)'], -.notion-body:not(.dark) [style*='background: rgb(233, 229, 227)'] { - background: var(--theme--block_brown) !important; - color: var(--theme--block_brown-text) !important; -} -.notion-body.dark [style*='background: rgba(147, 114, 100, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(140, 46, 0, 0.2)'] { - background: var(--theme--tag_brown) !important; - color: var(--theme--tag_brown-text) !important; -} -.notion-body.dark [style*='background: rgba(67, 64, 64, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(233, 229, 227, 0.3)'] { - background: var(--theme--callout_brown) !important; - color: var(--theme--callout_brown-text) !important; -} - -.notion-body.dark [style*='color:rgb(255,163,68)'], -.notion-body.dark [style*='color: rgb(255, 163, 68); fill: rgb(255, 163, 68);'], -.notion-body:not(.dark) [style*='color:rgb(217,115,13)'], -.notion-body:not(.dark) - [style*='color: rgb(217, 115, 13); fill: rgb(217, 115, 13);'] { - color: var(--theme--text_orange) !important; - fill: var(--theme--text_orange) !important; -} -.notion-body.dark [style*='background:rgb(89,74,58)'], -.notion-body:not(.dark) [style*='background:rgb(250,235,221)'] { - background: var(--theme--highlight_orange) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(89,74,58)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(250,235,221)'] { - color: var(--theme--highlight_orange-text) !important; -} -.notion-body.dark - [style*='color:rgb(255,163,68)'] - [style*='background:rgb(89,74,58)'], -.notion-body.dark - [style*='color: rgb(255, 163, 68); fill: rgb(255, 163, 68);'] - [style*='background:rgb(89,74,58)'], -.notion-body:not(.dark) - [style*='color:rgb(217,115,13)'] - [style*='background:rgb(250,235,221)'], -.notion-body:not(.dark) - [style*='color: rgb(217, 115, 13); fill: rgb(217, 115, 13);'] - [style*='background:rgb(250,235,221)'] { - background: var(--theme--highlight_orange) !important; - color: var(--theme--text_orange) !important; - fill: var(--theme--text_orange) !important; -} -.notion-body.dark [style*='background: rgb(89, 74, 58)'], -.notion-body:not(.dark) [style*='background: rgb(250, 235, 221)'] { - background: var(--theme--block_orange) !important; - color: var(--theme--block_orange-text) !important; -} -.notion-body.dark [style*='background: rgba(255, 163, 68, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(245, 93, 0, 0.2)'] { - background: var(--theme--tag_orange) !important; - color: var(--theme--tag_orange-text) !important; -} -.notion-body.dark [style*='background: rgba(89, 74, 58, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(250, 235, 221, 0.3)'] { - background: var(--theme--callout_orange) !important; - color: var(--theme--callout_orange-text) !important; -} - -.notion-body.dark [style*='color:rgb(255,220,73)'], -.notion-body.dark [style*='color: rgb(255, 220, 73); fill: rgb(255, 220, 73);'], -.notion-body:not(.dark) [style*='color:rgb(223,171,1)'], -.notion-body:not(.dark) - [style*='color: rgb(223, 171, 1); fill: rgb(223, 171, 1);'] { - color: var(--theme--text_yellow) !important; - fill: var(--theme--text_yellow) !important; -} -.notion-body.dark [style*='background:rgb(89,86,59)'], -.notion-body:not(.dark) [style*='background:rgb(251,243,219)'] { - background: var(--theme--highlight_yellow) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(89,86,59)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(251,243,219)'] { - color: var(--theme--highlight_yellow-text) !important; -} -.notion-body.dark - [style*='color:rgb(255,220,73)'] - [style*='background:rgb(89,86,59)'], -.notion-body.dark - [style*='color: rgb(255, 220, 73); fill: rgb(255, 220, 73);'] - [style*='background:rgb(89,86,59)'], -.notion-body:not(.dark) - [style*='color:rgb(223,171,1)'] - [style*='background:rgb(251,243,219)'], -.notion-body:not(.dark) - [style*='color: rgb(223, 171, 1); fill: rgb(223, 171, 1);'] - [style*='background:rgb(251,243,219)'] { - background: var(--theme--highlight_yellow) !important; - color: var(--theme--text_yellow) !important; - fill: var(--theme--text_yellow) !important; -} -.notion-body.dark [style*='background: rgb(89, 86, 59)'], -.notion-body:not(.dark) [style*='background: rgb(251, 243, 219)'] { - background: var(--theme--block_yellow) !important; - color: var(--theme--block_yellow-text) !important; -} -.notion-body.dark [style*='background: rgba(255, 220, 73, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(233, 168, 0, 0.2)'] { - background: var(--theme--tag_yellow) !important; - color: var(--theme--tag_yellow-text) !important; -} -.notion-body.dark [style*='background: rgba(89, 86, 59, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(251, 243, 219, 0.3)'] { - background: var(--theme--callout_yellow) !important; - color: var(--theme--callout_yellow-text) !important; -} - -.notion-body.dark [style*='color:rgb(77,171,154)'], -.notion-body.dark [style*='color: rgb(77, 171, 154); fill: rgb(77, 171, 154);'], -.notion-body:not(.dark) [style*='color:rgb(15,123,108)'], -.notion-body:not(.dark) - [style*='color: rgb(15, 123, 108); fill: rgb(15, 123, 108);'] { - color: var(--theme--text_green) !important; - fill: var(--theme--text_green) !important; -} -.notion-body.dark [style*='background:rgb(53,76,75)'], -.notion-body:not(.dark) [style*='background:rgb(221,237,234)'] { - background: var(--theme--highlight_green) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(53,76,75)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(221,237,234)'] { - color: var(--theme--highlight_green-text) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(89,86,59)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(251,243,219)'] { - color: var(--theme--highlight_green-text) !important; -} -.notion-body.dark - [style*='color:rgb(77,171,154)'] - [style*='background:rgb(53,76,75)'], -.notion-body.dark - [style*='color: rgb(77, 171, 154); fill: rgb(77, 171, 154);'] - [style*='background:rgb(53,76,75)'], -.notion-body:not(.dark) - [style*='color:rgb(15,123,108)'] - [style*='background:rgb(221,237,234)'], -.notion-body:not(.dark) - [style*='color: rgb(15, 123, 108); fill: rgb(15, 123, 108);'] - [style*='background:rgb(221,237,234)'] { - background: var(--theme--highlight_green) !important; - color: var(--theme--text_green) !important; - fill: var(--theme--text_green) !important; -} -.notion-body.dark [style*='background: rgb(53, 76, 75)'], -.notion-body:not(.dark) [style*='background: rgb(221, 237, 234)'] { - background: var(--theme--block_green) !important; - color: var(--theme--block_green-text) !important; -} -.notion-body.dark [style*='background: rgba(77, 171, 154, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(0, 135, 107, 0.2)'] { - background: var(--theme--tag_green) !important; - color: var(--theme--tag_green-text) !important; -} -.notion-body.dark [style*='background: rgba(53, 76, 75, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(221, 237, 234, 0.3)'] { - background: var(--theme--callout_green) !important; - color: var(--theme--callout_green-text) !important; -} - -.notion-body.dark [style*='color:rgb(82,156,202)'], -.notion-body.dark [style*='color: rgb(82, 156, 202); fill: rgb(82, 156, 202);'], -.notion-body:not(.dark) [style*='color:rgb(11,110,153)'], -.notion-body:not(.dark) - [style*='color: rgb(11, 110, 153); fill: rgb(11, 110, 153);'] { - color: var(--theme--text_blue) !important; - fill: var(--theme--text_blue) !important; -} -.notion-body.dark [style*='background:rgb(54,73,84)'], -.notion-body:not(.dark) [style*='background:rgb(221,235,241)'] { - background: var(--theme--highlight_blue) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(54,73,84)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(221,235,241)'] { - color: var(--theme--highlight_blue-text) !important; -} -.notion-body.dark - [style*='color:rgb(82,156,202)'] - [style*='background:rgb(54,73,84)'], -.notion-body.dark - [style*='color: rgb(82, 156, 202); fill: rgb(82, 156, 202);'] - [style*='background:rgb(54,73,84)'], -.notion-body:not(.dark) - [style*='color:rgb(11,110,153)'] - [style*='background:rgb(221,235,241)'], -.notion-body:not(.dark) - [style*='color: rgb(11, 110, 153); fill: rgb(11, 110, 153);'] - [style*='background:rgb(221,235,241)'] { - background: var(--theme--highlight_blue) !important; - color: var(--theme--text_blue) !important; - fill: var(--theme--text_blue) !important; -} -.notion-body.dark [style*='background: rgb(54, 73, 84)'], -.notion-body:not(.dark) [style*='background: rgb(221, 235, 241)'] { - background: var(--theme--block_blue) !important; - color: var(--theme--block_blue-text) !important; -} -.notion-body.dark [style*='background: rgba(82, 156, 202, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(0, 120, 223, 0.2)'] { - background: var(--theme--tag_blue) !important; - color: var(--theme--tag_blue-text) !important; -} -.notion-body.dark [style*='background: rgba(54, 73, 84, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(221, 235, 241, 0.3)'] { - background: var(--theme--callout_blue) !important; - color: var(--theme--callout_blue-text) !important; -} - -.notion-body.dark [style*='color:rgb(154,109,215)'], -.notion-body.dark - [style*='color: rgb(154, 109, 215); fill: rgb(154, 109, 215);'], -.notion-body:not(.dark) [style*='color:rgb(105,64,165)'], -.notion-body:not(.dark) - [style*='color: rgb(105, 64, 165); fill: rgb(105, 64, 165);'] { - color: var(--theme--text_purple) !important; - fill: var(--theme--text_purple) !important; -} -.notion-body.dark [style*='background:rgb(68,63,87)'], -.notion-body:not(.dark) [style*='background:rgb(234,228,242)'] { - background: var(--theme--highlight_purple) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(68,63,87)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(234,228,242)'] { - color: var(--theme--highlight_purple-text) !important; -} -.notion-body.dark - [style*='color:rgb(154,109,215)'] - [style*='background:rgb(68,63,87)'], -.notion-body.dark - [style*='color: rgb(154, 109, 215); fill: rgb(154, 109, 215);'] - [style*='background:rgb(68,63,87)'], -.notion-body:not(.dark) - [style*='color:rgb(105,64,165)'] - [style*='background:rgb(234,228,242)'], -.notion-body:not(.dark) - [style*='color: rgb(105, 64, 165); fill: rgb(105, 64, 165);'] - [style*='background:rgb(234,228,242)'] { - background: var(--theme--highlight_purple) !important; - color: var(--theme--text_purple) !important; - fill: var(--theme--text_purple) !important; -} -.notion-body.dark [style*='background: rgb(68, 63, 87)'], -.notion-body:not(.dark) [style*='background: rgb(234, 228, 242)'] { - background: var(--theme--block_purple) !important; - color: var(--theme--block_purple-text) !important; -} -.notion-body.dark [style*='background: rgba(154, 109, 215, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(103, 36, 222, 0.2)'] { - background: var(--theme--tag_purple) !important; - color: var(--theme--tag_purple-text) !important; -} -.notion-body.dark [style*='background: rgba(68, 63, 87, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(234, 228, 242, 0.3)'] { - background: var(--theme--callout_purple) !important; - color: var(--theme--callout_purple-text) !important; -} - -.notion-body.dark [style*='color:rgb(226,85,161)'], -.notion-body.dark [style*='color: rgb(226, 85, 161); fill: rgb(226, 85, 161);'], -.notion-body:not(.dark) [style*='color:rgb(173,26,114)'], -.notion-body:not(.dark) - [style*='color: rgb(173, 26, 114); fill: rgb(173, 26, 114);'] { - color: var(--theme--text_pink) !important; - fill: var(--theme--text_pink) !important; -} -.notion-body.dark [style*='background:rgb(83,59,76)'], -.notion-body:not(.dark) [style*='background:rgb(244,223,235)'] { - background: var(--theme--highlight_pink) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(83,59,76)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(244,223,235)'] { - color: var(--theme--highlight_pink-text) !important; -} -.notion-body.dark - [style*='color:rgb(226,85,161)'] - [style*='background:rgb(83,59,76)'], -.notion-body.dark - [style*='color: rgb(226, 85, 161); fill: rgb(226, 85, 161);'] - [style*='background:rgb(83,59,76)'], -.notion-body:not(.dark) - [style*='color:rgb(173,26,114)'] - [style*='background:rgb(244,223,235)'], -.notion-body:not(.dark) - [style*='color: rgb(173, 26, 114); fill: rgb(173, 26, 114);'] - [style*='background:rgb(244,223,235)'] { - background: var(--theme--highlight_pink) !important; - color: var(--theme--text_pink) !important; - fill: var(--theme--text_pink) !important; -} -.notion-body.dark [style*='background: rgb(83, 59, 76)'], -.notion-body:not(.dark) [style*='background: rgb(244, 223, 235)'] { - background: var(--theme--block_pink) !important; - color: var(--theme--block_pink-text) !important; -} -.notion-body.dark [style*='background: rgba(226, 85, 161, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(221, 0, 129, 0.2)'] { - background: var(--theme--tag_pink) !important; - color: var(--theme--tag_pink-text) !important; -} -.notion-body.dark [style*='background: rgba(83, 59, 76, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(244, 223, 235, 0.3)'] { - background: var(--theme--callout_pink) !important; - color: var(--theme--callout_pink-text) !important; -} - -.notion-body.dark [style*='color:rgb(255,115,105)'], -.notion-body.dark - [style*='color: rgb(255, 115, 105); fill: rgb(255, 115, 105);'], -.notion-body:not(.dark) [style*='color:rgb(224,62,62)'], -.notion-body:not(.dark) - [style*='color: rgb(224, 62, 62); fill: rgb(224, 62, 62);'] { - color: var(--theme--text_red) !important; - fill: var(--theme--text_red) !important; -} -.notion-body.dark [style*='background:rgb(89,65,65)'], -.notion-body:not(.dark) [style*='background:rgb(251,228,228)'] { - background: var(--theme--highlight_red) !important; -} -.notion-body.dark - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(89,65,65)'], -.notion-body:not(.dark) - [style*='color: inherit'] - > div - > div - > [style*='background:rgb(251,228,228)'] { - color: var(--theme--highlight_red-text) !important; -} -.notion-body.dark - [style*='color:rgb(255,115,105)'] - [style*='background:rgb(89,65,65)'], -.notion-body.dark - [style*='color: rgb(255, 115, 105); fill: rgb(255, 115, 105);'] - [style*='background:rgb(89,65,65)'], -.notion-body:not(.dark) - [style*='color:rgb(224,62,62)'] - [style*='background:rgb(251,228,228)'], -.notion-body:not(.dark) - [style*='color: rgb(224, 62, 62); fill: rgb(224, 62, 62);'] - [style*='background:rgb(251,228,228)'] { - background: var(--theme--highlight_red) !important; - color: var(--theme--text_red) !important; - fill: var(--theme--text_red) !important; -} -.notion-body.dark [style*='background: rgb(89, 65, 65)'], -.notion-body:not(.dark) [style*='background: rgb(251, 228, 228)'] { - background: var(--theme--block_red) !important; - color: var(--theme--block_red-text) !important; -} -.notion-body.dark [style*='background: rgba(255, 115, 105, 0.5);'], -.notion-body:not(.dark) [style*='background: rgba(255, 0, 26, 0.2)'] { - background: var(--theme--tag_red) !important; - color: var(--theme--tag_red-text) !important; -} -.notion-body.dark [style*='background: rgba(89, 65, 65, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(251, 228, 228, 0.3)'] { - background: var(--theme--callout_red) !important; - color: var(--theme--callout_red-text) !important; -} - -/** normalisations **/ - -.notion-frame .notion-scroller [style*='padding-left: 136.5px;'] { - padding-left: 0 !important; -} -.notion-frame .notion-scroller [style*='padding-right: 136.5px;'] { - padding-right: 0 !important; -} -.notion-collection_view-block > :first-child, -.notion-collection_view-block .notion-scroller > :first-child { - padding-left: 0 !important; - padding-right: 0 !important; -} - -.notion-page-content [data-block-id][style*='max-width'] { - max-width: 100% !important; -} -.notion-peek-renderer .notion-page-content [style*='max-width: 943px;'] { - max-width: none !important; -} - -.notion-page-content .notion-collection_view-block[style*=' width'], -.notion-page-content .notion-collection_view-block[style^='width'] { - width: 100% !important; -} -.notion-page-content - .notion-collection_view-block - [style*='padding-left: 50px'], -.notion-page-content - .notion-collection_view-block - [style*='padding-left: 96px'], -.notion-page-content - .notion-collection_view-block - [style*='padding-left: 126px'] { - padding-left: 0 !important; -} -.notion-page-content - .notion-collection_view-block - [style*='padding-right: 50px'], -.notion-page-content - .notion-collection_view-block - [style*='padding-right: 96px'], -.notion-page-content - .notion-collection_view-block - [style*='padding-right: 126px'] { - padding-right: 0 !important; -} -.notion-page-content - .notion-collection_view-block - [style*='min-width: calc(100% - 192px);'], -.notion-page-content - .notion-collection_view-block - [style*='min-width: 708px;'] { - min-width: 100% !important; -} - -.notion-calendar-view-day, -.DayPicker-Day--today:not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end), -.DayPicker-Day.DayPicker-Day--start.DayPicker-Day--selected, -.DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day--outside:hover, -.DayPicker:not(.DayPicker--interactionDisabled) - .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end) { - transition: all 200ms ease !important; -} -.notion-token-remove-button { - transition: opacity 200ms ease !important; -} -.notion-to_do-block > div > div > div[style*='background:'] { - transition: background 200ms ease !important; -} - -[style*='background:rgb('] { - padding-bottom: 3px !important; -} - -iframe { - border-radius: 0px !important; -} -.notion-overlay-container.notion-default-overlay-container - > :nth-child(2) - > div - > :nth-child(2) - > :nth-child(2) - > div - > div - > div - > div - > .notion-scroller.vertical - > div - > div - div[style*='transition: background 120ms ease-in 0s;']:not([style*='border-radius:']) { - border-radius: 4px; -} - -.notion-selectable.notion-collection_view-block - > [style*='box-shadow: white -3px 0px 0px;'], -.notion-selectable.notion-collection_view_page-block - > [style*='box-shadow: white -3px 0px 0px;'] { - box-shadow: none !important; -} -.notion-body:not(.dark) - .notion-code-block - [style*='background: rgb(234, 233, 229)'] { - background: transparent !important; -} diff --git a/insert/theming/global.css b/insert/theming/global.css deleted file mode 100644 index 6eec19f..0000000 --- a/insert/theming/global.css +++ /dev/null @@ -1,1096 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * (c) 2020 Arecsu - * (c) 2020 u/zenith_illinois - * (c) 2020 admiraldus (https://github.com/admiraldus) - * (c) 2020 CloudHill - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -:root { - /** dark **/ - - --theme_dark--page-width: 900px; - --theme_dark--page_full-width: 100%; - --theme_dark--page-padding: calc(96px + env(safe-area-inset-left)); - --theme_dark--page_banner-height: 30vh; - --theme_dark--preview-width: 977px; - --theme_dark--preview-padding: 8rem; - --theme_dark--preview_banner-height: 20vh; - - --theme_dark--dragarea: #272d2f; - --theme_dark--page: rgb(47, 52, 55); - --theme_dark--sidebar: rgb(55, 60, 63); - --theme_dark--sidebar_popout: rgb(55, 60, 63); - --theme_dark--preview: rgb(47, 52, 55); - --theme_dark--preview_shadow: rgba(0, 0, 0, 0.4); - --theme_dark--quickfind_shadow: rgba(15, 15, 15, 0.6); - --theme_dark--popout: rgb(63, 68, 71); - --theme_dark--shadow: rgba(15, 15, 15, 0.1); - --theme_dark--introduction_overlay: rgba(15, 15, 15, 0.2); - - --theme_dark--selected: rgba(46, 170, 220, 0.2); - --theme_dark--accent: rgb(46, 170, 220); - --theme_dark--accent-text: #fff; - --theme_dark--accent_semitransparent: rgba(46, 170, 220, 0.15); - --theme_dark--accent_button-hover: rgb(6, 156, 205); - --theme_dark--accent_button-active: rgb(0, 141, 190); - --theme_dark--accent_date-hover: rgba(45, 156, 219, 0.2); - --theme_dark--notion_ui_link-hover: #eb5757; - --theme_dark--notion_plan_choose_checkmark_hue-rotate: 0deg; - - --theme_dark--db_card: rgb(63, 68, 71); - --theme_dark--db_card-hover: rgb(71, 76, 80); - --theme_dark--db_card_preview: rgba(255, 255, 255, 0.05); - --theme_dark--db_weekend: rgb(55, 60, 63); - --theme_dark--db_today: rgb(235, 87, 87); - --theme_dark--db_today-text: #fff; - --theme_dark--timeline_divider_thin: rgba(255, 255, 255, 0.07); - --theme_dark--timeline_arrow: rgb(47, 52, 55); - --theme_dark--timeline_arrow_box: rgba(202, 204, 206, 0.6); - --theme_dark--timeline_arrow_box-hover: rgb(202, 204, 206); - - --theme_dark--checkbox: transparent; - --theme_dark--checkbox-text: #fff; - --theme_dark--checkbox-hover: rgb(71, 76, 80); - --theme_dark--checkbox-hover-text: #fff; - --theme_dark--checkbox-active: var(--theme_dark--accent); - --theme_dark--checkbox-active-text: #fff; - - --theme_dark--toggle_on: var(--theme_dark--accent); - --theme_dark--toggle_off: rgba(202, 204, 206, 0.3); - --theme_dark--toggle_dot: #fff; - - --theme_dark--input: rgba(15, 15, 15, 0.3); - --theme_dark--input-border: rgba(15, 15, 15, 0.2); - --theme_dark--filter: rgb(80, 85, 88); - --theme_dark--sub_filter: rgba(255, 255, 255, 0.02); - --theme_dark--tag_select: rgb(55, 60, 63); - /* three-dot menus for images & bookmarks */ - --theme_dark--button_semitransparent: rgba(0, 0, 0, 0.6); - --theme_dark--button-hover: rgb(71, 76, 80); - --theme_dark--button-active: rgb(63, 68, 71); - /* change cover | reposition, cell expansions: <-> open, 123, phone/email/url */ - --theme_dark--expand: rgb(47, 52, 55); - --theme_dark--expand_icon: #fff; - --theme_dark--expand-text: #fff; - --theme_dark--expand-hover: rgb(98, 102, 104); - --theme_dark--expand-active: rgb(120, 123, 123); - --theme_dark--reminder_future: #2eaadc; - --theme_dark--reminder_past: #eb5757; - --theme_dark--divider: rgba(255, 255, 255, 0.07); - - --theme_dark--embed_block: rgb(63, 68, 71); - --theme_dark--equation_block: rgb(55, 60, 63); - --theme_dark--equation_editor: rgba(15, 15, 15, 0.3); - --theme_dark--equation_inline: rgba(255, 255, 255, 0.2); - --theme_dark--equation_inline-text: var(--theme_dark--text); - --theme_dark--equation_error-text: rgba(235, 87, 87, 0.8); - --theme_dark--equation_error_block: rgba(235, 87, 87, 0.15); - --theme_dark--equation_error_inline-text: #eb5757; - - --theme_dark--reposition_cover: rgba(0, 0, 0, 0.4); - --theme_dark--reposition_cover-text: #fff; - --theme_dark--resizer: rgba(15, 15, 15, 0.6); - --theme_dark--resizer-border: rgba(255, 255, 255, 0.9); - --theme_dark--tooltip: rgb(202, 204, 206); - --theme_dark--tooltip-text: rgb(15, 15, 15); - --theme_dark--tooltip-text_grey: rgba(47, 52, 55, 0.6); - - --theme_dark--help: rgb(80, 85, 88); - --theme_dark--help-hover: rgb(98, 102, 104); - - --theme_dark--settings_danger_button-text: rgb(235, 87, 87); - --theme_dark--settings_danger_button-border: rgba(235, 87, 87, 0.5); - --theme_dark--settings_danger_button-hover: rgba(235, 87, 87, 0.1); - - --theme_dark--scrollbar_track: rgba(202, 204, 206, 0.04); - --theme_dark--scrollbar_thumb: #474c50; - --theme_dark--scrollbar_thumb-hover: rgba(202, 204, 206, 0.3); - - --theme_dark--font_sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', - Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji', - 'Segoe UI Symbol'; - --theme_dark--font_serif: Lyon-Text, Georgia, YuMincho, 'Yu Mincho', - 'Hiragino Mincho ProN', 'Hiragino Mincho Pro', 'Songti TC', 'Songti SC', - SimSun, 'Nanum Myeongjo', NanumMyeongjo, Batang, serif; - --theme_dark--font_mono: iawriter-mono, Nitti, Menlo, Courier, monospace; - --theme_dark--font_code: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, - Courier, monospace; - --theme_dark--font_quote: var(--theme_dark--font_sans); - --theme_dark--font_headings: var(--theme_dark--font_sans); - - --theme_dark--font_title-size: 40px; - --theme_dark--font_heading1-size: 1.875em; - --theme_dark--font_heading2-size: 1.5em; - --theme_dark--font_heading3-size: 1.25em; - --theme_dark--font_body-size: 16px; - --theme_dark--font_quote-size: 1.2em; - --theme_dark--font_code-size: 85%; - --theme_dark--font_ui-size: 14px; - /* sidebar titles, block copy & caption buttons */ - --theme_dark--font_ui_small-size: 11.5px; - --theme_dark--font_popout_title-size: 11px; - --theme_dark--font_description-size: 12px; - --theme_dark--font_callout_icon-size: 16.8px; - --theme_dark--font_help_icon-size: 20px; - - --theme_dark--text_block-line_height: 1.5; - --theme_dark--text_block-margin_top: 1px; - - --theme_dark--icon: rgba(202, 204, 206, 0.6); - --theme_dark--icon_topbar: rgb(202, 204, 206); - --theme_dark--text: rgba(255, 255, 255, 0.9); - --theme_dark--text_property: rgba(255, 255, 255, 0.6); - --theme_dark--text_placeholder: rgba(255, 255, 255, 0.4); - --theme_dark--text_pseudo: rgba(202, 204, 206, 0.4); - --theme_dark--text_sidebar: rgba(255, 255, 255, 0.6); - - --theme_dark--code_inline: rgba(135, 131, 120, 0.15); - --theme_dark--code_inline-text: #eb5757; - - --theme_dark--code: rgb(63, 68, 71); - --theme_dark--code_plain: var(--theme_dark--text); - --theme_dark--code_function: var(--theme_dark--code_plain); - --theme_dark--code_parameter: var(--theme_dark--code_plain); - --theme_dark--code_keyword: hsl(350, 40%, 70%); - --theme_dark--code_constant: hsl(350, 40%, 70%); - --theme_dark--code_tag: hsl(350, 40%, 70%); - --theme_dark--code_operator: hsl(40, 90%, 60%); - --theme_dark--code_important: #e90; - --theme_dark--code_regex: #e90; - --theme_dark--code_property: hsl(350, 40%, 70%); - --theme_dark--code_builtin: hsl(75, 70%, 60%); - --theme_dark--code_class-name: var(--theme_dark--code_plain); - --theme_dark--code_attr-name: hsl(75, 70%, 60%); - --theme_dark--code_attr-value: hsl(350, 40%, 70%); - --theme_dark--code_selector: hsl(75, 70%, 60%); - --theme_dark--code_id: var(--theme_dark--code_plain); - --theme_dark--code_class: var(--theme_dark--code_plain); - --theme_dark--code_pseudo-element: var(--theme_dark--code_plain); - --theme_dark--code_pseudo-class: var(--theme_dark--code_plain); - --theme_dark--code_attribute: var(--theme_dark--code_plain); - --theme_dark--code_value: var(--theme_dark--code_plain); - --theme_dark--code_unit: var(--theme_dark--code_plain); - --theme_dark--code_comment: hsl(30, 20%, 50%); - --theme_dark--code_punctuation: var(--theme_dark--code_plain); - --theme_dark--code_annotation: var(--theme_dark--code_punctuation); - --theme_dark--code_decorator: var(--theme_dark--code_punctuation); - --theme_dark--code_doctype: hsl(30, 20%, 50%); - --theme_dark--code_number: hsl(350, 40%, 70%); - --theme_dark--code_string: hsl(75, 70%, 60%); - --theme_dark--code_boolean: hsl(350, 40%, 70%); - - --theme_dark--text_grey: rgba(151, 154, 155, 0.95); - --theme_dark--text_brown: rgb(147, 114, 100); - --theme_dark--text_orange: rgb(255, 163, 68); - --theme_dark--text_yellow: rgb(255, 220, 73); - --theme_dark--text_green: rgb(77, 171, 154); - --theme_dark--text_blue: rgb(82, 156, 202); - --theme_dark--text_purple: rgb(154, 109, 215); - --theme_dark--text_pink: rgb(226, 85, 161); - --theme_dark--text_red: rgb(255, 115, 105); - - --theme_dark--highlight-text: var(--theme_dark--text); - --theme_dark--highlight_grey: rgb(69, 75, 78); - --theme_dark--highlight_grey-text: var(--theme_dark--highlight-text); - --theme_dark--highlight_brown: rgb(67, 64, 64); - --theme_dark--highlight_brown-text: var(--theme_dark--highlight-text); - --theme_dark--highlight_orange: rgb(89, 74, 58); - --theme_dark--highlight_orange-text: var(--theme_dark--highlight-text); - --theme_dark--highlight_yellow: rgb(89, 86, 59); - --theme_dark--highlight_yellow-text: var(--theme_dark--highlight-text); - --theme_dark--highlight_green: rgb(53, 76, 75); - --theme_dark--highlight_green-text: var(--theme_dark--highlight-text); - --theme_dark--highlight_blue: rgb(54, 73, 84); - --theme_dark--highlight_blue-text: var(--theme_dark--highlight-text); - --theme_dark--highlight_purple: rgb(68, 63, 87); - --theme_dark--highlight_purple-text: var(--theme_dark--highlight-text); - --theme_dark--highlight_pink: rgb(83, 59, 76); - --theme_dark--highlight_pink-text: var(--theme_dark--highlight-text); - --theme_dark--highlight_red: rgb(89, 65, 65); - --theme_dark--highlight_red-text: var(--theme_dark--highlight-text); - - --theme_dark--block-text: var(--theme_dark--text); - --theme_dark--block_grey: rgb(69, 75, 78); - --theme_dark--block_grey-text: var(--theme_dark--block-text); - --theme_dark--block_brown: rgb(67, 64, 64); - --theme_dark--block_brown-text: var(--theme_dark--block-text); - --theme_dark--block_orange: rgb(89, 74, 58); - --theme_dark--block_orange-text: var(--theme_dark--block-text); - --theme_dark--block_yellow: rgb(89, 86, 59); - --theme_dark--block_yellow-text: var(--theme_dark--block-text); - --theme_dark--block_green: rgb(53, 76, 75); - --theme_dark--block_green-text: var(--theme_dark--block-text); - --theme_dark--block_blue: rgb(54, 73, 84); - --theme_dark--block_blue-text: var(--theme_dark--block-text); - --theme_dark--block_purple: rgb(68, 63, 87); - --theme_dark--block_purple-text: var(--theme_dark--block-text); - --theme_dark--block_pink: rgb(83, 59, 76); - --theme_dark--block_pink-text: var(--theme_dark--block-text); - --theme_dark--block_red: rgb(89, 65, 65); - --theme_dark--block_red-text: var(--theme_dark--block-text); - - --theme_dark--tag-text: var(--theme_dark--text); - --theme_dark--tag_default: rgb(80, 85, 88); - --theme_dark--tag_default-text: var(--theme_dark--tag-text); - --theme_dark--tag_plan: var(--theme_dark--tag_default); - --theme_dark--tag_plan-text: rgba(255, 255, 255, 0.6); - --theme_dark--tag_new: rgb(235, 87, 87); - --theme_dark--tag_new-text: #fff; - --theme_dark--tag_grey: rgba(151, 154, 155, 0.5); - --theme_dark--tag_grey-text: var(--theme_dark--tag-text); - --theme_dark--tag_brown: rgba(147, 114, 100, 0.5); - --theme_dark--tag_brown-text: var(--theme_dark--tag-text); - --theme_dark--tag_orange: rgba(255, 163, 68, 0.5); - --theme_dark--tag_orange-text: var(--theme_dark--tag-text); - --theme_dark--tag_yellow: rgba(255, 220, 73, 0.5); - --theme_dark--tag_yellow-text: var(--theme_dark--tag-text); - --theme_dark--tag_green: rgba(77, 171, 154, 0.5); - --theme_dark--tag_green-text: var(--theme_dark--tag-text); - --theme_dark--tag_blue: rgba(82, 156, 202, 0.5); - --theme_dark--tag_blue-text: var(--theme_dark--tag-text); - --theme_dark--tag_purple: rgba(154, 109, 215, 0.5); - --theme_dark--tag_purple-text: var(--theme_dark--tag-text); - --theme_dark--tag_pink: rgba(226, 85, 161, 0.5); - --theme_dark--tag_pink-text: var(--theme_dark--tag-text); - --theme_dark--tag_red: rgba(255, 115, 105, 0.5); - --theme_dark--tag_red-text: var(--theme_dark--tag-text); - - --theme_dark--callout-text: var(--theme_dark--text); - --theme_dark--callout_grey: rgba(69, 75, 78, 0.3); - --theme_dark--callout_grey-text: var(--theme_dark--callout-text); - --theme_dark--callout_brown: rgba(67, 64, 64, 0.3); - --theme_dark--callout_brown-text: var(--theme_dark--callout-text); - --theme_dark--callout_orange: rgba(89, 74, 58, 0.3); - --theme_dark--callout_orange-text: var(--theme_dark--callout-text); - --theme_dark--callout_yellow: rgba(89, 86, 59, 0.3); - --theme_dark--callout_yellow-text: var(--theme_dark--callout-text); - --theme_dark--callout_green: rgba(53, 76, 75, 0.3); - --theme_dark--callout_green-text: var(--theme_dark--callout-text); - --theme_dark--callout_blue: rgba(54, 73, 84, 0.3); - --theme_dark--callout_blue-text: var(--theme_dark--callout-text); - --theme_dark--callout_purple: rgba(68, 63, 87, 0.3); - --theme_dark--callout_purple-text: var(--theme_dark--callout-text); - --theme_dark--callout_pink: rgba(83, 59, 76, 0.3); - --theme_dark--callout_pink-text: var(--theme_dark--callout-text); - --theme_dark--callout_red: rgba(89, 65, 65, 0.3); - --theme_dark--callout_red-text: var(--theme_dark--callout-text); - - /** light **/ - - --theme_light--page-width: 900px; - --theme_light--page_full-width: 100%; - --theme_light--page-padding: calc(96px + env(safe-area-inset-left)); - --theme_light--page_banner-height: 30vh; - --theme_light--preview-width: 977px; - --theme_light--preview-padding: 8rem; - --theme_light--preview_banner-height: 20vh; - - --theme_light--dragarea: rgba(55, 53, 47, 0.04); - --theme_light--page: #fff; - --theme_light--sidebar: rgb(247, 246, 243); - --theme_light--sidebar_popout: #fff; - --theme_light--preview: #fff; - --theme_light--preview_shadow: rgba(0, 0, 0, 0.4); - --theme_light--quickfind_shadow: rgba(15, 15, 15, 0.6); - --theme_light--popout: #fff; - --theme_light--shadow: rgba(15, 15, 15, 0.1); - --theme_light--introduction_overlay: rgba(247, 246, 243, 0.8); - - --theme_light--selected: rgba(46, 170, 220, 0.2); - --theme_light--accent: rgb(46, 170, 220); - --theme_light--accent-text: #fff; - --theme_light--accent_semitransparent: rgba(46, 170, 220, 0.15); - --theme_light--accent_button-hover: rgb(6, 156, 205); - --theme_light--accent_button-active: rgb(0, 141, 190); - --theme_light--accent_date-hover: rgba(45, 156, 219, 0.2); - --theme_light--notion_ui_link-hover: #eb5757; - --theme_light--notion_plan_choose_checkmark_hue-rotate: 0deg; - - --theme_light--db_card: #fff; - --theme_light--db_card-hover: rgba(55, 53, 47, 0.03); - --theme_light--db_card_preview: rgba(55, 53, 47, 0.024); - --theme_light--db_weekend: rgb(247, 246, 243); - --theme_light--db_today: rgb(235, 87, 87); - --theme_light--db_today-text: #fff; - --theme_light--timeline_divider_thin: rgba(55, 53, 47, 0.09); - --theme_light--timeline_arrow: #fff; - --theme_light--timeline_arrow_box: rgba(55, 53, 47, 0.4); - --theme_light--timeline_arrow_box-hover: rgba(55, 53, 47, 0.8); - - --theme_light--checkbox: transparent; - --theme_light--checkbox-text: #000; - --theme_light--checkbox-hover: rgba(55, 53, 47, 0.08); - --theme_light--checkbox-hover-text: #000; - --theme_light--checkbox-active: var(--theme_light--accent); - --theme_light--checkbox-active-text: #fff; - - --theme_light--toggle_on: var(--theme_light--accent); - --theme_light--toggle_off: rgba(135, 131, 120, 0.3); - --theme_light--toggle_dot: #fff; - - --theme_light--input: rgba(242, 241, 238, 0.6); - --theme_light--input-border: rgba(15, 15, 15, 0.1); - --theme_light--filter: #fff; - --theme_light--sub_filter: rgba(0, 0, 0, 0.02); - --theme_light--tag_select: rgba(242, 241, 238, 0.6); - /* three-dot menus for images & bookmarks */ - --theme_light--button_semitransparent: rgba(0, 0, 0, 0.6); - --theme_light--button-hover: rgba(55, 53, 47, 0.08); - --theme_light--button-active: rgba(55, 53, 47, 0.16); - /* change cover | reposition, cell expansions: <-> open, 123, phone/email/url */ - --theme_light--expand: #fff; - --theme_light--expand_icon: rgba(55, 53, 47, 0.6); - --theme_light--expand-text: rgba(55, 53, 47, 0.6); - --theme_light--expand-hover: rgb(239, 239, 238); - --theme_light--expand-active: rgb(223, 223, 222); - --theme_light--reminder_future: #2eaadc; - --theme_light--reminder_past: #eb5757; - --theme_light--divider: rgba(55, 53, 47, 0.09); - - --theme_light--embed_block: rgb(242, 241, 238); - --theme_light--equation_block: rgb(247, 246, 243); - --theme_light--equation_editor: rgba(242, 241, 238, 0.6); - --theme_light--equation_inline: rgba(46, 170, 220, 0.2); - --theme_light--equation_inline-text: var(--theme_light--text); - --theme_light--equation_error-text: rgba(235, 87, 87, 0.8); - --theme_light--equation_error_block: rgba(235, 87, 87, 0.15); - --theme_light--equation_error_inline-text: #eb5757; - - --theme_light--reposition_cover: rgba(0, 0, 0, 0.4); - --theme_light--reposition_cover-text: #fff; - --theme_light--resizer: rgba(15, 15, 15, 0.6); - --theme_light--resizer-border: rgba(255, 255, 255, 0.9); - --theme_light--tooltip: rgb(15, 15, 15); - --theme_light--tooltip-text: rgba(255, 255, 255, 0.9); - --theme_light--tooltip-text_grey: rgba(206, 205, 202, 0.6); - - --theme_light--help: #fff; - --theme_light--help-hover: rgb(239, 239, 238); - - --theme_light--settings_danger_button-text: rgb(235, 87, 87); - --theme_light--settings_danger_button-border: rgba(235, 87, 87, 0.5); - --theme_light--settings_danger_button-hover: rgba(235, 87, 87, 0.1); - - --theme_light--scrollbar_track: #edece9; - --theme_light--scrollbar_thumb: #d3d1cb; - --theme_light--scrollbar_thumb-hover: #aeaca6; - - --theme_light--font_sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', - Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji', - 'Segoe UI Symbol'; - --theme_light--font_serif: Lyon-Text, Georgia, YuMincho, 'Yu Mincho', - 'Hiragino Mincho ProN', 'Hiragino Mincho Pro', 'Songti TC', 'Songti SC', - SimSun, 'Nanum Myeongjo', NanumMyeongjo, Batang, serif; - --theme_light--font_mono: iawriter-mono, Nitti, Menlo, Courier, monospace; - --theme_light--font_code: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, - Courier, monospace; - --theme_light--font_quote: var(--theme_light--font_sans); - --theme_light--font_headings: var(--theme_light--font_sans); - - --theme_light--font_title-size: 40px; - --theme_light--font_heading1-size: 1.875em; - --theme_light--font_heading2-size: 1.5em; - --theme_light--font_heading3-size: 1.25em; - --theme_light--font_body-size: 16px; - --theme_light--font_quote-size: 1.2em; - --theme_light--font_code-size: 85%; - --theme_light--font_ui-size: 14px; - /* sidebar titles, block copy & caption buttons */ - --theme_light--font_ui_small-size: 11.5px; - --theme_light--font_popout_title-size: 11px; - --theme_light--font_description-size: 12px; - --theme_light--font_callout_icon-size: 16.8px; - --theme_light--font_help_icon-size: 20px; - - --theme_light--text_block-line_height: 1.5; - --theme_light--text_block-margin_top: 1px; - - --theme_light--icon: rgba(55, 53, 47, 0.4); - --theme_light--icon_topbar: rgba(55, 53, 47, 0.8); - --theme_light--text: rgb(55, 53, 47); - --theme_light--text_property: rgba(55, 53, 47, 0.6); - --theme_light--text_placeholder: rgba(55, 53, 47, 0.4); - --theme_light--text_pseudo: rgba(55, 53, 47, 0.3); - --theme_light--text_sidebar: rgba(25, 23, 17, 0.6); - - --theme_light--code_inline: rgba(135, 131, 120, 0.15); - --theme_light--code_inline-text: #eb5757; - - --theme_light--code: rgb(247, 246, 243); - --theme_light--code_plain: var(--theme_light--text); - --theme_light--code_function: #dd4a68; - --theme_light--code_parameter: var(--theme_light--code_plain); - --theme_light--code_keyword: #07a; - --theme_light--code_constant: #905; - --theme_light--code_tag: #905; - --theme_light--code_operator: #9a6e3a; - --theme_light--code_important: #e90; - --theme_light--code_regex: #e90; - --theme_light--code_property: #905; - --theme_light--code_builtin: #690; - --theme_light--code_class-name: #dd4a68; - --theme_light--code_attr-name: #690; - --theme_light--code_attr-value: #07a; - --theme_light--code_selector: #690; - --theme_light--code_id: var(--theme_light--code_plain); - --theme_light--code_class: var(--theme_light--code_plain); - --theme_light--code_pseudo-element: var(--theme_light--code_plain); - --theme_light--code_pseudo-class: var(--theme_light--code_plain); - --theme_light--code_attribute: var(--theme_light--code_plain); - --theme_light--code_value: var(--theme_light--code_plain); - --theme_light--code_unit: var(--theme_light--code_plain); - --theme_light--code_comment: #708090; - --theme_light--code_punctuation: #999; - --theme_light--code_annotation: var(--theme_light--code_punctuation); - --theme_light--code_decorator: var(--theme_light--code_punctuation); - --theme_light--code_doctype: #708090; - --theme_light--code_number: #905; - --theme_light--code_string: #690; - --theme_light--code_boolean: #905; - - --theme_light--text_grey: rgb(155, 154, 151); - --theme_light--text_brown: rgb(100, 71, 58); - --theme_light--text_orange: rgb(217, 115, 13); - --theme_light--text_yellow: rgb(223, 171, 1); - --theme_light--text_green: rgb(15, 123, 108); - --theme_light--text_blue: rgb(11, 110, 153); - --theme_light--text_purple: rgb(105, 64, 165); - --theme_light--text_pink: rgb(173, 26, 114); - --theme_light--text_red: rgb(224, 62, 62); - - --theme_light--highlight-text: var(--theme_light--text); - --theme_light--highlight_grey: rgb(235, 236, 237); - --theme_light--highlight_grey-text: var(--theme_light--highlight-text); - --theme_light--highlight_brown: rgb(233, 229, 227); - --theme_light--highlight_brown-text: var(--theme_light--highlight-text); - --theme_light--highlight_orange: rgb(250, 235, 221); - --theme_light--highlight_orange-text: var(--theme_light--highlight-text); - --theme_light--highlight_yellow: rgb(251, 243, 219); - --theme_light--highlight_yellow-text: var(--theme_light--highlight-text); - --theme_light--highlight_green: rgb(221, 237, 234); - --theme_light--highlight_green-text: var(--theme_light--highlight-text); - --theme_light--highlight_blue: rgb(221, 235, 241); - --theme_light--highlight_blue-text: var(--theme_light--highlight-text); - --theme_light--highlight_purple: rgb(234, 228, 242); - --theme_light--highlight_purple-text: var(--theme_light--highlight-text); - --theme_light--highlight_pink: rgb(244, 223, 235); - --theme_light--highlight_pink-text: var(--theme_light--highlight-text); - --theme_light--highlight_red: rgb(251, 228, 228); - --theme_light--highlight_red-text: var(--theme_light--highlight-text); - - --theme_light--block-text: var(--theme_light--text); - --theme_light--block_grey: rgb(235, 236, 237); - --theme_light--block_grey-text: var(--theme_light--block-text); - --theme_light--block_brown: rgb(233, 229, 227); - --theme_light--block_brown-text: var(--theme_light--block-text); - --theme_light--block_orange: rgb(250, 235, 221); - --theme_light--block_orange-text: var(--theme_light--block-text); - --theme_light--block_yellow: rgb(251, 243, 219); - --theme_light--block_yellow-text: var(--theme_light--block-text); - --theme_light--block_green: rgb(221, 237, 234); - --theme_light--block_green-text: var(--theme_light--block-text); - --theme_light--block_blue: rgb(221, 235, 241); - --theme_light--block_blue-text: var(--theme_light--block-text); - --theme_light--block_purple: rgb(234, 228, 242); - --theme_light--block_purple-text: var(--theme_light--block-text); - --theme_light--block_pink: rgb(244, 223, 235); - --theme_light--block_pink-text: var(--theme_light--block-text); - --theme_light--block_red: rgb(251, 228, 228); - --theme_light--block_red-text: var(--theme_light--block-text); - - --theme_light--tag-text: var(--theme_light--text); - --theme_light--tag_default: rgba(206, 205, 202, 0.5); - --theme_light--tag_default-text: var(--theme_light--tag-text); - --theme_light--tag_plan: var(--theme_light--tag_default); - --theme_light--tag_plan-text: rgba(55, 53, 47, 0.6); - --theme_light--tag_new: rgb(235, 87, 87); - --theme_light--tag_new-text: #fff; - --theme_light--tag_grey: rgba(140, 46, 0, 0.2); - --theme_light--tag_grey-text: var(--theme_light--tag-text); - --theme_light--tag_brown: rgba(140, 46, 0, 0.2); - --theme_light--tag_brown-text: var(--theme_light--tag-text); - --theme_light--tag_orange: rgba(245, 93, 0, 0.2); - --theme_light--tag_orange-text: var(--theme_light--tag-text); - --theme_light--tag_yellow: rgba(233, 168, 0, 0.2); - --theme_light--tag_yellow-text: var(--theme_light--tag-text); - --theme_light--tag_green: rgba(0, 135, 107, 0.2); - --theme_light--tag_green-text: var(--theme_light--tag-text); - --theme_light--tag_blue: rgba(0, 120, 223, 0.2); - --theme_light--tag_blue-text: var(--theme_light--tag-text); - --theme_light--tag_purple: rgba(103, 36, 222, 0.2); - --theme_light--tag_purple-text: var(--theme_light--tag-text); - --theme_light--tag_pink: rgba(221, 0, 129, 0.2); - --theme_light--tag_pink-text: var(--theme_light--tag-text); - --theme_light--tag_red: rgba(255, 0, 26, 0.2); - --theme_light--tag_red-text: var(--theme_light--tag-text); - - --theme_light--callout-text: var(--theme_light--text); - --theme_light--callout_grey: rgba(235, 236, 237, 0.3); - --theme_light--callout_grey-text: var(--theme_light--callout-text); - --theme_light--callout_brown: rgba(233, 229, 227, 0.3); - --theme_light--callout_brown-text: var(--theme_light--callout-text); - --theme_light--callout_orange: rgba(250, 235, 221, 0.3); - --theme_light--callout_orange-text: var(--theme_light--callout-text); - --theme_light--callout_yellow: rgba(251, 243, 219, 0.3); - --theme_light--callout_yellow-text: var(--theme_light--callout-text); - --theme_light--callout_green: rgba(221, 237, 234, 0.3); - --theme_light--callout_green-text: var(--theme_light--callout-text); - --theme_light--callout_blue: rgba(221, 235, 241, 0.3); - --theme_light--callout_blue-text: var(--theme_light--callout-text); - --theme_light--callout_purple: rgba(234, 228, 242, 0.3); - --theme_light--callout_purple-text: var(--theme_light--callout-text); - --theme_light--callout_pink: rgba(244, 223, 235, 0.3); - --theme_light--callout_pink-text: var(--theme_light--callout-text); - --theme_light--callout_red: rgba(251, 228, 228, 0.3); - --theme_light--callout_red-text: var(--theme_light--callout-text); -} - -.notion-dark-theme { - --theme--page-width: var(--theme_dark--page-width); - --theme--page_full-width: var(--theme_dark--page_full-width); - --theme--page-padding: var(--theme_dark--page-padding); - --theme--page_banner-height: var(--theme_dark--page_banner-height); - --theme--preview-width: var(--theme_dark--preview-width); - --theme--preview-padding: var(--theme_dark--preview-padding); - --theme--preview_banner-height: var(--theme_dark--preview_banner-height); - - --theme--dragarea: var(--theme_dark--dragarea); - --theme--page: var(--theme_dark--page); - --theme--sidebar: var(--theme_dark--sidebar); - --theme--sidebar_popout: var(--theme_dark--sidebar_popout); - --theme--preview: var(--theme_dark--preview); - --theme--preview_shadow: var(--theme_dark--preview_shadow); - --theme--quickfind_shadow: var(--theme_dark--quickfind_shadow); - --theme--popout: var(--theme_dark--popout); - --theme--shadow: var(--theme_dark--shadow); - --theme--introduction_overlay: var(--theme_dark--introduction_overlay); - - --theme--selected: var(--theme_dark--selected); - --theme--accent: var(--theme_dark--accent); - --theme--accent-text: var(--theme_dark--accent-text); - --theme--accent_semitransparent: var(--theme_dark--accent_semitransparent); - --theme--accent_button-hover: var(--theme_dark--accent_button-hover); - --theme--accent_button-active: var(--theme_dark--accent_button-active); - --theme--accent_date-hover: var(--theme_dark--accent_date-hover); - --theme--notion_ui_link-hover: var(--theme_dark--notion_ui_link-hover); - --theme--notion_plan_choose_checkmark_hue-rotate: var( - --theme_dark--notion_plan_choose_checkmark_hue-rotate - ); - - --theme--db_card: var(--theme_dark--db_card); - --theme--db_card-hover: var(--theme_dark--db_card-hover); - --theme--db_card_preview: var(--theme_dark--db_card_preview); - --theme--db_weekend: var(--theme_dark--db_weekend); - --theme--db_today: var(--theme_dark--db_today); - --theme--db_today-text: var(--theme_dark--db_today-text); - --theme--timeline_divider_thin: var(--theme_dark--timeline_divider_thin); - --theme--timeline_arrow: var(--theme_dark--timeline_arrow); - --theme--timeline_arrow_box: var(--theme_dark--timeline_arrow_box); - --theme--timeline_arrow_box-hover: var( - --theme_dark--timeline_arrow_box-hover - ); - - --theme--checkbox: var(--theme_dark--checkbox); - --theme--checkbox-text: var(--theme_dark--checkbox-text); - --theme--checkbox-hover: var(--theme_dark--checkbox-hover); - --theme--checkbox-hover-text: var(--theme_dark--checkbox-hover-text); - --theme--checkbox-active: var(--theme_dark--checkbox-active); - --theme--checkbox-active-text: var(--theme_dark--checkbox-active-text); - - --theme--toggle_on: var(--theme_dark--toggle_on); - --theme--toggle_off: var(--theme_dark--toggle_off); - --theme--toggle_dot: var(--theme_dark--toggle_dot); - - --theme--input: var(--theme_dark--input); - --theme--input-border: var(--theme_dark--input-border); - --theme--filter: var(--theme_dark--filter); - --theme--sub_filter: var(--theme_dark--sub_filter); - --theme--tag_select: var(--theme_dark--tag_select); - --theme--button_semitransparent: var(--theme_dark--button_semitransparent); - --theme--button-hover: var(--theme_dark--button-hover); - --theme--button-active: var(--theme_dark--button-active); - --theme--expand: var(--theme_dark--expand); - --theme--expand_icon: var(--theme_dark--expand_icon); - --theme--expand-text: var(--theme_dark--expand-text); - --theme--expand-hover: var(--theme_dark--expand-hover); - --theme--expand-active: var(--theme_dark--expand-active); - --theme--reminder_future: var(--theme_dark--reminder_future); - --theme--reminder_past: var(--theme_dark--reminder_past); - --theme--divider: var(--theme_dark--divider); - - --theme--embed_block: var(--theme_dark--embed_block); - --theme--equation_block: var(--theme_dark--equation_block); - --theme--equation_editor: var(--theme_dark--equation_editor); - --theme--equation_inline: var(--theme_dark--equation_inline); - --theme--equation_inline-text: var(--theme_dark--equation_inline-text); - --theme--equation_error-text: var(--theme_dark--equation_error-text); - --theme--equation_error_block: var(--theme_dark--equation_error_block); - --theme--equation_error_inline-text: var( - --theme_dark--equation_error_inline-text - ); - - --theme--reposition_cover: var(--theme_dark--reposition_cover); - --theme--reposition_cover-text: var(--theme_dark--reposition_cover-text); - --theme--resizer: var(--theme_dark--resizer); - --theme--resizer-border: var(--theme_dark--resizer-border); - --theme--tooltip: var(--theme_dark--tooltip); - --theme--tooltip-text: var(--theme_dark--tooltip-text); - --theme--tooltip-text_grey: var(--theme_dark--tooltip-text_grey); - - --theme--help: var(--theme_dark--help); - --theme--help-hover: var(--theme_dark--help-hover); - - --theme--settings_danger_button-text: var( - --theme_dark--settings_danger_button-text - ); - --theme--settings_danger_button-border: var( - --theme_dark--settings_danger_button-border - ); - --theme--settings_danger_button-hover: var( - --theme_dark--settings_danger_button-hover - ); - - --theme--scrollbar_track: var(--theme_dark--scrollbar_track); - --theme--scrollbar_thumb: var(--theme_dark--scrollbar_thumb); - --theme--scrollbar_thumb-hover: var(--theme_dark--scrollbar_thumb-hover); - - --theme--font_sans: var(--theme_dark--font_sans); - --theme--font_serif: var(--theme_dark--font_serif); - --theme--font_mono: var(--theme_dark--font_mono); - --theme--font_code: var(--theme_dark--font_code); - --theme--font_quote: var(--theme_dark--font_quote); - --theme--font_headings: var(--theme_dark--font_headings); - - --theme--font_title-size: var(--theme_dark--font_title-size); - --theme--font_heading1-size: var(--theme_dark--font_heading1-size); - --theme--font_heading2-size: var(--theme_dark--font_heading2-size); - --theme--font_heading3-size: var(--theme_dark--font_heading3-size); - --theme--font_body-size: var(--theme_dark--font_body-size); - --theme--font_quote-size: var(--theme_dark--font_quote-size); - --theme--font_code-size: var(--theme_dark--font_code-size); - --theme--font_ui-size: var(--theme_dark--font_ui-size); - --theme--font_ui_small-size: var(--theme_dark--font_ui_small-size); - --theme--font_popout_title-size: var(--theme_dark--font_popout_title-size); - --theme--font_description-size: var(--theme_dark--font_description-size); - --theme--font_callout_icon-size: var(--theme_dark--font_callout_icon-size); - --theme--font_help_icon-size: var(--theme_dark--font_help_icon-size); - - --theme--text_block-line_height: var(--theme_dark--text_block-line_height); - --theme--text_block-margin_top: var(--theme_dark--text_block-margin_top); - - --theme--icon: var(--theme_dark--icon); - --theme--icon_topbar: var(--theme_dark--icon_topbar); - --theme--text: var(--theme_dark--text); - --theme--text_property: var(--theme_dark--text_property); - --theme--text_placeholder: var(--theme_dark--text_placeholder); - --theme--text_pseudo: var(--theme_dark--text_pseudo); - --theme--text_sidebar: var(--theme_dark--text_sidebar); - - --theme--code_inline: var(--theme_dark--code_inline); - --theme--code_inline-text: var(--theme_dark--code_inline-text); - - --theme--code: var(--theme_dark--code); - --theme--code_plain: var(--theme_dark--code_plain); - --theme--code_function: var(--theme_dark--code_function); - --theme--code_parameter: var(--theme_dark--code_parameter); - --theme--code_keyword: var(--theme_dark--code_keyword); - --theme--code_constant: var(--theme_dark--code_constant); - --theme--code_tag: var(--theme_dark--code_tag); - --theme--code_operator: var(--theme_dark--code_operator); - --theme--code_important: var(--theme_dark--code_important); - --theme--code_regex: var(--theme_dark--code_regex); - --theme--code_property: var(--theme_dark--code_property); - --theme--code_builtin: var(--theme_dark--code_builtin); - --theme--code_class-name: var(--theme_dark--code_class-name); - --theme--code_attr-name: var(--theme_dark--code_attr-name); - --theme--code_attr-value: var(--theme_dark--code_attr-value); - --theme--code_selector: var(--theme_dark--code_selector); - --theme--code_id: var(--theme_dark--code_id); - --theme--code_class: var(--theme_dark--code_class); - --theme--code_pseudo-element: var(--theme_dark--code_pseudo-element); - --theme--code_pseudo-class: var(--theme_dark--code_pseudo-class); - --theme--code_attribute: var(--theme_dark--code_attribute); - --theme--code_value: var(--theme_dark--code_value); - --theme--code_unit: var(--theme_dark--code_unit); - --theme--code_comment: var(--theme_dark--code_comment); - --theme--code_punctuation: var(--theme_dark--code_punctuation); - --theme--code_annotation: var(--theme_dark--code_annotation); - --theme--code_decorator: var(--theme_dark--code_decorator); - --theme--code_doctype: var(--theme_dark--code_doctype); - --theme--code_number: var(--theme_dark--code_number); - --theme--code_string: var(--theme_dark--code_string); - --theme--code_boolean: var(--theme_dark--code_boolean); - - --theme--text_grey: var(--theme_dark--text_grey); - --theme--text_brown: var(--theme_dark--text_brown); - --theme--text_orange: var(--theme_dark--text_orange); - --theme--text_yellow: var(--theme_dark--text_yellow); - --theme--text_green: var(--theme_dark--text_green); - --theme--text_blue: var(--theme_dark--text_blue); - --theme--text_purple: var(--theme_dark--text_purple); - --theme--text_pink: var(--theme_dark--text_pink); - --theme--text_red: var(--theme_dark--text_red); - - --theme--highlight-text: var(--theme_dark--highlight-text); - --theme--highlight_grey: var(--theme_dark--highlight_grey); - --theme--highlight_grey-text: var(--theme_dark--highlight_grey-text); - --theme--highlight_brown: var(--theme_dark--highlight_brown); - --theme--highlight_brown-text: var(--theme_dark--highlight_brown-text); - --theme--highlight_orange: var(--theme_dark--highlight_orange); - --theme--highlight_orange-text: var(--theme_dark--highlight_orange-text); - --theme--highlight_yellow: var(--theme_dark--highlight_yellow); - --theme--highlight_yellow-text: var(--theme_dark--highlight_yellow-text); - --theme--highlight_green: var(--theme_dark--highlight_green); - --theme--highlight_green-text: var(--theme_dark--highlight_green-text); - --theme--highlight_blue: var(--theme_dark--highlight_blue); - --theme--highlight_blue-text: var(--theme_dark--highlight_blue-text); - --theme--highlight_purple: var(--theme_dark--highlight_purple); - --theme--highlight_purple-text: var(--theme_dark--highlight_purple-text); - --theme--highlight_pink: var(--theme_dark--highlight_pink); - --theme--highlight_pink-text: var(--theme_dark--highlight_pink-text); - --theme--highlight_red: var(--theme_dark--highlight_red); - --theme--highlight_red-text: var(--theme_dark--highlight_red-text); - - --theme--block-text: var(--theme_dark--block-text); - --theme--block_grey: var(--theme_dark--block_grey); - --theme--block_grey-text: var(--theme_dark--block_grey-text); - --theme--block_brown: var(--theme_dark--block_brown); - --theme--block_brown-text: var(--theme_dark--block_brown-text); - --theme--block_orange: var(--theme_dark--block_orange); - --theme--block_orange-text: var(--theme_dark--block_orange-text); - --theme--block_yellow: var(--theme_dark--block_yellow); - --theme--block_yellow-text: var(--theme_dark--block_yellow-text); - --theme--block_green: var(--theme_dark--block_green); - --theme--block_green-text: var(--theme_dark--block_green-text); - --theme--block_blue: var(--theme_dark--block_blue); - --theme--block_blue-text: var(--theme_dark--block_blue-text); - --theme--block_purple: var(--theme_dark--block_purple); - --theme--block_purple-text: var(--theme_dark--block_purple-text); - --theme--block_pink: var(--theme_dark--block_pink); - --theme--block_pink-text: var(--theme_dark--block_pink-text); - --theme--block_red: var(--theme_dark--block_red); - --theme--block_red-text: var(--theme_dark--block_red-text); - - --theme--tag-text: var(--theme_dark--tag-text); - --theme--tag_default: var(--theme_dark--tag_default); - --theme--tag_default-text: var(--theme_dark--tag_default-text); - --theme--tag_plan: var(--theme_dark--tag_plan); - --theme--tag_plan-text: var(--theme_dark--tag_plan-text); - --theme--tag_new: var(--theme_dark--tag_new); - --theme--tag_new-text: var(--theme_dark--tag_new-text); - --theme--tag_grey: var(--theme_dark--tag_grey); - --theme--tag_grey-text: var(--theme_dark--tag_grey-text); - --theme--tag_brown: var(--theme_dark--tag_brown); - --theme--tag_brown-text: var(--theme_dark--tag_brown-text); - --theme--tag_orange: var(--theme_dark--tag_orange); - --theme--tag_orange-text: var(--theme_dark--tag_orange-text); - --theme--tag_yellow: var(--theme_dark--tag_yellow); - --theme--tag_yellow-text: var(--theme_dark--tag_yellow-text); - --theme--tag_green: var(--theme_dark--tag_green); - --theme--tag_green-text: var(--theme_dark--tag_green-text); - --theme--tag_blue: var(--theme_dark--tag_blue); - --theme--tag_blue-text: var(--theme_dark--tag_blue-text); - --theme--tag_purple: var(--theme_dark--tag_purple); - --theme--tag_purple-text: var(--theme_dark--tag_purple-text); - --theme--tag_pink: var(--theme_dark--tag_pink); - --theme--tag_pink-text: var(--theme_dark--tag_pink-text); - --theme--tag_red: var(--theme_dark--tag_red); - --theme--tag_red-text: var(--theme_dark--tag_red-text); - - --theme--callout-text: var(--theme_dark--callout-text); - --theme--callout_grey: var(--theme_dark--callout_grey); - --theme--callout_grey-text: var(--theme_dark--callout_grey-text); - --theme--callout_brown: var(--theme_dark--callout_brown); - --theme--callout_brown-text: var(--theme_dark--callout_brown-text); - --theme--callout_orange: var(--theme_dark--callout_orange); - --theme--callout_orange-text: var(--theme_dark--callout_orange-text); - --theme--callout_yellow: var(--theme_dark--callout_yellow); - --theme--callout_yellow-text: var(--theme_dark--callout_yellow-text); - --theme--callout_green: var(--theme_dark--callout_green); - --theme--callout_green-text: var(--theme_dark--callout_green-text); - --theme--callout_blue: var(--theme_dark--callout_blue); - --theme--callout_blue-text: var(--theme_dark--callout_blue-text); - --theme--callout_purple: var(--theme_dark--callout_purple); - --theme--callout_purple-text: var(--theme_dark--callout_purple-text); - --theme--callout_pink: var(--theme_dark--callout_pink); - --theme--callout_pink-text: var(--theme_dark--callout_pink-text); - --theme--callout_red: var(--theme_dark--callout_red); - --theme--callout_red-text: var(--theme_dark--callout_red-text); -} - -.notion-light-theme { - --theme--page-width: var(--theme_light--page-width); - --theme--page_full-width: var(--theme_light--page_full-width); - --theme--page-padding: var(--theme_light--page-padding); - --theme--page_banner-height: var(--theme_light--page_banner-height); - --theme--preview-width: var(--theme_light--preview-width); - --theme--preview-padding: var(--theme_light--preview-padding); - --theme--preview_banner-height: var(--theme_light--preview_banner-height); - - --theme--dragarea: var(--theme_light--dragarea); - --theme--page: var(--theme_light--page); - --theme--sidebar: var(--theme_light--sidebar); - --theme--sidebar_popout: var(--theme_light--sidebar_popout); - --theme--preview: var(--theme_light--preview); - --theme--preview_shadow: var(--theme_light--preview_shadow); - --theme--quickfind_shadow: var(--theme_light--quickfind_shadow); - --theme--popout: var(--theme_light--popout); - --theme--shadow: var(--theme_light--shadow); - --theme--introduction_overlay: var(--theme_light--introduction_overlay); - - --theme--selected: var(--theme_light--selected); - --theme--accent: var(--theme_light--accent); - --theme--accent-text: var(--theme_light--accent-text); - --theme--accent_semitransparent: var(--theme_light--accent_semitransparent); - --theme--accent_button-hover: var(--theme_light--accent_button-hover); - --theme--accent_button-active: var(--theme_light--accent_button-active); - --theme--accent_date-hover: var(--theme_light--accent_date-hover); - --theme--notion_ui_link-hover: var(--theme_light--notion_ui_link-hover); - --theme--notion_plan_choose_checkmark_hue-rotate: var( - --theme_light--notion_plan_choose_checkmark_hue-rotate - ); - - --theme--db_card: var(--theme_light--db_card); - --theme--db_card-hover: var(--theme_light--db_card-hover); - --theme--db_card_preview: var(--theme_light--db_card_preview); - --theme--db_weekend: var(--theme_light--db_weekend); - --theme--db_today: var(--theme_light--db_today); - --theme--db_today-text: var(--theme_light--db_today-text); - --theme--timeline_divider_thin: var(--theme_light--timeline_divider_thin); - --theme--timeline_arrow: var(--theme_light--timeline_arrow); - --theme--timeline_arrow_box: var(--theme_light--timeline_arrow_box); - --theme--timeline_arrow_box-hover: var( - --theme_light--timeline_arrow_box-hover - ); - - --theme--checkbox: var(--theme_light--checkbox); - --theme--checkbox-text: var(--theme_light--checkbox-text); - --theme--checkbox-hover: var(--theme_light--checkbox-hover); - --theme--checkbox-hover-text: var(--theme_light--checkbox-hover-text); - --theme--checkbox-active: var(--theme_light--checkbox-active); - --theme--checkbox-active-text: var(--theme_light--checkbox-active-text); - - --theme--toggle_on: var(--theme_light--toggle_on); - --theme--toggle_off: var(--theme_light--toggle_off); - --theme--toggle_dot: var(--theme_light--toggle_dot); - - --theme--input: var(--theme_light--input); - --theme--input-border: var(--theme_light--input-border); - --theme--filter: var(--theme_light--filter); - --theme--sub_filter: var(--theme_light--sub_filter); - --theme--tag_select: var(--theme_light--tag_select); - --theme--button_semitransparent: var(--theme_light--button_semitransparent); - --theme--button-hover: var(--theme_light--button-hover); - --theme--button-active: var(--theme_light--button-active); - --theme--expand: var(--theme_light--expand); - --theme--expand_icon: var(--theme_light--expand_icon); - --theme--expand-text: var(--theme_light--expand-text); - --theme--expand-hover: var(--theme_light--expand-hover); - --theme--expand-active: var(--theme_light--expand-active); - --theme--reminder_future: var(--theme_light--reminder_future); - --theme--reminder_past: var(--theme_light--reminder_past); - --theme--divider: var(--theme_light--divider); - - --theme--embed_block: var(--theme_light--embed_block); - --theme--equation_block: var(--theme_light--equation_block); - --theme--equation_editor: var(--theme_light--equation_editor); - --theme--equation_inline: var(--theme_light--equation_inline); - --theme--equation_inline-text: var(--theme_light--equation_inline-text); - --theme--equation_error-text: var(--theme_light--equation_error-text); - --theme--equation_error_block: var(--theme_light--equation_error_block); - --theme--equation_error_inline-text: var( - --theme_light--equation_error_inline-text - ); - - --theme--reposition_cover: var(--theme_light--reposition_cover); - --theme--reposition_cover-text: var(--theme_light--reposition_cover-text); - --theme--resizer: var(--theme_light--resizer); - --theme--resizer-border: var(--theme_light--resizer-border); - --theme--tooltip: var(--theme_light--tooltip); - --theme--tooltip-text: var(--theme_light--tooltip-text); - --theme--tooltip-text_grey: var(--theme_light--tooltip-text_grey); - - --theme--help: var(--theme_light--help); - --theme--help-hover: var(--theme_light--help-hover); - - --theme--settings_danger_button-text: var( - --theme_light--settings_danger_button-text - ); - --theme--settings_danger_button-border: var( - --theme_light--settings_danger_button-border - ); - --theme--settings_danger_button-hover: var( - --theme_light--settings_danger_button-hover - ); - - --theme--scrollbar_track: var(--theme_light--scrollbar_track); - --theme--scrollbar_thumb: var(--theme_light--scrollbar_thumb); - --theme--scrollbar_thumb-hover: var(--theme_light--scrollbar_thumb-hover); - - --theme--font_sans: var(--theme_light--font_sans); - --theme--font_serif: var(--theme_light--font_serif); - --theme--font_mono: var(--theme_light--font_mono); - --theme--font_code: var(--theme_light--font_code); - --theme--font_quote: var(--theme_light--font_quote); - --theme--font_headings: var(--theme_light--font_headings); - - --theme--font_title-size: var(--theme_light--font_title-size); - --theme--font_heading1-size: var(--theme_light--font_heading1-size); - --theme--font_heading2-size: var(--theme_light--font_heading2-size); - --theme--font_heading3-size: var(--theme_light--font_heading3-size); - --theme--font_body-size: var(--theme_light--font_body-size); - --theme--font_quote-size: var(--theme_light--font_quote-size); - --theme--font_code-size: var(--theme_light--font_code-size); - --theme--font_ui-size: var(--theme_light--font_ui-size); - --theme--font_ui_small-size: var(--theme_light--font_ui_small-size); - --theme--font_popout_title-size: var(--theme_light--font_popout_title-size); - --theme--font_description-size: var(--theme_light--font_description-size); - --theme--font_callout_icon-size: var(--theme_light--font_callout_icon-size); - --theme--font_help_icon-size: var(--theme_light--font_help_icon-size); - - --theme--text_block-line_height: var(--theme_light--text_block-line_height); - --theme--text_block-margin_top: var(--theme_light--text_block-margin_top); - - --theme--icon: var(--theme_light--icon); - --theme--icon_topbar: var(--theme_light--icon_topbar); - --theme--text: var(--theme_light--text); - --theme--text_property: var(--theme_light--text_property); - --theme--text_placeholder: var(--theme_light--text_placeholder); - --theme--text_pseudo: var(--theme_light--text_pseudo); - --theme--text_sidebar: var(--theme_light--text_sidebar); - - --theme--code_inline: var(--theme_light--code_inline); - --theme--code_inline-text: var(--theme_light--code_inline-text); - - --theme--code: var(--theme_light--code); - --theme--code_plain: var(--theme_light--code_plain); - --theme--code_function: var(--theme_light--code_function); - --theme--code_parameter: var(--theme_light--code_parameter); - --theme--code_keyword: var(--theme_light--code_keyword); - --theme--code_constant: var(--theme_light--code_constant); - --theme--code_tag: var(--theme_light--code_tag); - --theme--code_operator: var(--theme_light--code_operator); - --theme--code_important: var(--theme_light--code_important); - --theme--code_regex: var(--theme_light--code_regex); - --theme--code_property: var(--theme_light--code_property); - --theme--code_builtin: var(--theme_light--code_builtin); - --theme--code_class-name: var(--theme_light--code_class-name); - --theme--code_attr-name: var(--theme_light--code_attr-name); - --theme--code_attr-value: var(--theme_light--code_attr-value); - --theme--code_selector: var(--theme_light--code_selector); - --theme--code_id: var(--theme_light--code_id); - --theme--code_class: var(--theme_light--code_class); - --theme--code_pseudo-element: var(--theme_light--code_pseudo-element); - --theme--code_pseudo-class: var(--theme_light--code_pseudo-class); - --theme--code_attribute: var(--theme_light--code_attribute); - --theme--code_value: var(--theme_light--code_value); - --theme--code_unit: var(--theme_light--code_unit); - --theme--code_comment: var(--theme_light--code_comment); - --theme--code_punctuation: var(--theme_light--code_punctuation); - --theme--code_annotation: var(--theme_light--code_annotation); - --theme--code_decorator: var(--theme_light--code_decorator); - --theme--code_doctype: var(--theme_light--code_doctype); - --theme--code_number: var(--theme_light--code_number); - --theme--code_string: var(--theme_light--code_string); - --theme--code_boolean: var(--theme_light--code_boolean); - - --theme--text_grey: var(--theme_light--text_grey); - --theme--text_brown: var(--theme_light--text_brown); - --theme--text_orange: var(--theme_light--text_orange); - --theme--text_yellow: var(--theme_light--text_yellow); - --theme--text_green: var(--theme_light--text_green); - --theme--text_blue: var(--theme_light--text_blue); - --theme--text_purple: var(--theme_light--text_purple); - --theme--text_pink: var(--theme_light--text_pink); - --theme--text_red: var(--theme_light--text_red); - - --theme--highlight-text: var(--theme_light--highlight-text); - --theme--highlight_grey: var(--theme_light--highlight_grey); - --theme--highlight_grey-text: var(--theme_light--highlight_grey-text); - --theme--highlight_brown: var(--theme_light--highlight_brown); - --theme--highlight_brown-text: var(--theme_light--highlight_brown-text); - --theme--highlight_orange: var(--theme_light--highlight_orange); - --theme--highlight_orange-text: var(--theme_light--highlight_orange-text); - --theme--highlight_yellow: var(--theme_light--highlight_yellow); - --theme--highlight_yellow-text: var(--theme_light--highlight_yellow-text); - --theme--highlight_green: var(--theme_light--highlight_green); - --theme--highlight_green-text: var(--theme_light--highlight_green-text); - --theme--highlight_blue: var(--theme_light--highlight_blue); - --theme--highlight_blue-text: var(--theme_light--highlight_blue-text); - --theme--highlight_purple: var(--theme_light--highlight_purple); - --theme--highlight_purple-text: var(--theme_light--highlight_purple-text); - --theme--highlight_pink: var(--theme_light--highlight_pink); - --theme--highlight_pink-text: var(--theme_light--highlight_pink-text); - --theme--highlight_red: var(--theme_light--highlight_red); - --theme--highlight_red-text: var(--theme_light--highlight_red-text); - - --theme--block-text: var(--theme_light--block-text); - --theme--block_grey: var(--theme_light--block_grey); - --theme--block_grey-text: var(--theme_light--block_grey-text); - --theme--block_brown: var(--theme_light--block_brown); - --theme--block_brown-text: var(--theme_light--block_brown-text); - --theme--block_orange: var(--theme_light--block_orange); - --theme--block_orange-text: var(--theme_light--block_orange-text); - --theme--block_yellow: var(--theme_light--block_yellow); - --theme--block_yellow-text: var(--theme_light--block_yellow-text); - --theme--block_green: var(--theme_light--block_green); - --theme--block_green-text: var(--theme_light--block_green-text); - --theme--block_blue: var(--theme_light--block_blue); - --theme--block_blue-text: var(--theme_light--block_blue-text); - --theme--block_purple: var(--theme_light--block_purple); - --theme--block_purple-text: var(--theme_light--block_purple-text); - --theme--block_pink: var(--theme_light--block_pink); - --theme--block_pink-text: var(--theme_light--block_pink-text); - --theme--block_red: var(--theme_light--block_red); - --theme--block_red-text: var(--theme_light--block_red-text); - - --theme--tag-text: var(--theme_light--tag-text); - --theme--tag_default: var(--theme_light--tag_default); - --theme--tag_default-text: var(--theme_light--tag_default-text); - --theme--tag_plan: var(--theme_light--tag_plan); - --theme--tag_plan-text: var(--theme_light--tag_plan-text); - --theme--tag_new: var(--theme_light--tag_new); - --theme--tag_new-text: var(--theme_light--tag_new-text); - --theme--tag_grey: var(--theme_light--tag_grey); - --theme--tag_grey-text: var(--theme_light--tag_grey-text); - --theme--tag_brown: var(--theme_light--tag_brown); - --theme--tag_brown-text: var(--theme_light--tag_brown-text); - --theme--tag_orange: var(--theme_light--tag_orange); - --theme--tag_orange-text: var(--theme_light--tag_orange-text); - --theme--tag_yellow: var(--theme_light--tag_yellow); - --theme--tag_yellow-text: var(--theme_light--tag_yellow-text); - --theme--tag_green: var(--theme_light--tag_green); - --theme--tag_green-text: var(--theme_light--tag_green-text); - --theme--tag_blue: var(--theme_light--tag_blue); - --theme--tag_blue-text: var(--theme_light--tag_blue-text); - --theme--tag_purple: var(--theme_light--tag_purple); - --theme--tag_purple-text: var(--theme_light--tag_purple-text); - --theme--tag_pink: var(--theme_light--tag_pink); - --theme--tag_pink-text: var(--theme_light--tag_pink-text); - --theme--tag_red: var(--theme_light--tag_red); - --theme--tag_red-text: var(--theme_light--tag_red-text); - - --theme--callout-text: var(--theme_light--callout-text); - --theme--callout_grey: var(--theme_light--callout_grey); - --theme--callout_grey-text: var(--theme_light--callout_grey-text); - --theme--callout_brown: var(--theme_light--callout_brown); - --theme--callout_brown-text: var(--theme_light--callout_brown-text); - --theme--callout_orange: var(--theme_light--callout_orange); - --theme--callout_orange-text: var(--theme_light--callout_orange-text); - --theme--callout_yellow: var(--theme_light--callout_yellow); - --theme--callout_yellow-text: var(--theme_light--callout_yellow-text); - --theme--callout_green: var(--theme_light--callout_green); - --theme--callout_green-text: var(--theme_light--callout_green-text); - --theme--callout_blue: var(--theme_light--callout_blue); - --theme--callout_blue-text: var(--theme_light--callout_blue-text); - --theme--callout_purple: var(--theme_light--callout_purple); - --theme--callout_purple-text: var(--theme_light--callout_purple-text); - --theme--callout_pink: var(--theme_light--callout_pink); - --theme--callout_pink-text: var(--theme_light--callout_pink-text); - --theme--callout_red: var(--theme_light--callout_red); - --theme--callout_red-text: var(--theme_light--callout_red-text); -} diff --git a/insert/theming/mod.js b/insert/theming/mod.js deleted file mode 100644 index 6dfe615..0000000 --- a/insert/theming/mod.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -'use strict'; - -module.exports = { - forced: true, - hidden: true, - id: '0f0bf8b6-eae6-4273-b307-8fc43f2ee082', - name: 'theming', - tags: ['core', 'theme'], - desc: 'loads & applies the theming variables and other css inserts.', - version: require('../package.json').version, - authors: [ - { - name: 'dragonwocky', - link: 'https://dragonwocky.me/', - avatar: 'https://dragonwocky.me/avatar.jpg', - }, - ], - hacks: { - 'renderer/preload.js': ( - __exports, - store, - { web: { whenReady, loadStyleset } } - ) => { - whenReady(() => { - loadStyleset('global'); - loadStyleset('app'); - }); - }, - }, -}; diff --git a/notion-enhancer v0.10.0 banner.jpg b/notion-enhancer v0.10.0 banner.jpg deleted file mode 100644 index e89d492..0000000 Binary files a/notion-enhancer v0.10.0 banner.jpg and /dev/null differ diff --git a/package.json b/package.json index ea11d63..2b0a70f 100644 --- a/package.json +++ b/package.json @@ -1,42 +1,46 @@ { "name": "notion-enhancer", - "version": "0.11.0-wip", + "version": "0.11.0-dev", + "author": "dragonwocky (https://dragonwocky.me/)", "description": "an enhancer/customiser for the all-in-one productivity workspace notion.so", + "homepage": "https://github.com/notion-enhancer/notion-enhancer", + "license": "MIT", "bin": { - "notion-enhancer": "bin.js" + "notion-enhancer": "bin.mjs" }, "type": "module", "engines": { - "node": ">=12.20.0" + "node": ">=16.x.x" }, "scripts": { "test": "echo \"no test specified\"", - "postinstall": "node bin.js apply -y", "preuninstall": "node bin.js remove -n" }, "dependencies": { - "asar": "^3.0.3", - "chalk": "^4.1.0" + "asar": "^3.1.0", + "chalk": "^4.1.2" }, "repository": { "type": "git", - "url": "git+https://github.com/notion-enhancer/notion-enhancer.git" + "url": "git+https://github.com/notion-enhancer/desktop.git" }, "keywords": [ - "notion", - "productivity", - "mod", - "loader", - "enhancer", - "hack", - "macOS", "windows", - "linux" + "macos", + "linux", + "productivity", + "hack", + "extensions", + "themes", + "integrations", + "mod", + "mods", + "mod-loader", + "enhancer", + "notion", + "notion-enhancer" ], - "author": "dragonwocky (https://dragonwocky.me/)", - "license": "MIT", "bugs": { - "url": "https://github.com/notion-enhancer/notion-enhancer/issues" - }, - "homepage": "https://github.com/notion-enhancer/notion-enhancer" + "url": "https://github.com/notion-enhancer/desktop/issues" + } } diff --git a/pkg/apply.js b/pkg/apply.js deleted file mode 100644 index 769af1d..0000000 --- a/pkg/apply.js +++ /dev/null @@ -1,133 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -'use strict'; - -import fs from 'fs'; -import fsp from 'fs/promises'; -import path from 'path'; -import asar from 'asar'; -import check from './check.js'; -import remove from './remove.js'; -import { locations, line, files } from './helpers.js'; - -export default async function ({ - overwriteOld, - __notion = locations.notion(), -} = {}) { - let status = check({ __notion }), - spinner; - switch (status.code) { - case 1: - throw Error(status.msg); - case 2: - console.info( - line.chalk` {grey * notion-enhancer v${status.version} already applied}` - ); - return true; - case 3: - console.warn(` * ${status.msg}`); - const prompt = { - prefix: line.chalk` {inverse > overwrite? [Y/n]:} `, - responses: ['Y', 'y', 'N', 'n', ''], - }, - action = prompt.responses.includes(overwriteOld) - ? overwriteOld - : (await line.read(prompt.prefix, prompt.responses)).toLowerCase(); - if (action.toLowerCase() === 'n') { - console.info(' * keeping previous version: exiting'); - return false; - } - await remove({ deleteConfig: 'n', deleteCache: 'n' }); - status = check(); - } - if (status.executable.endsWith('app.asar')) { - spinner = line.spinner(' * unpacking app files').loop(); - asar.extractAll( - status.executable, - status.executable.replace(/\.asar$/, '') - ); - spinner.stop(); - spinner = line.spinner(' * backing up default app').loop(); - await fsp.rename(status.executable, status.executable + '.bak'); - status.executable = status.executable.replace(/\.asar$/, ''); - spinner.stop(); - } else { - spinner = line.spinner(' * backing up default app').loop(); - await files.copyDir(status.executable, status.executable + '.bak'); - spinner.stop(); - } - - if ( - status.packed && - [ - '/opt/notion-app', // https://aur.archlinux.org/packages/notion-app/ - '/opt/notion', // https://github.com/jaredallard/notion-app - ].includes(__notion) - ) { - spinner = line - .spinner( - line.chalk` * patching app launcher {grey (notion-app linux wrappers only)}` - ) - .loop(); - for (let bin of [ - `/usr/bin/${__notion.split('/')[2]}`, - `${__notion}/${__notion.split('/')[2]}`, - ]) { - const script = await fsp.readFile(bin, 'utf8'); - if (script.includes('app.asar')) { - await fsp.writeFile( - bin, - script.replace(/(electron\d*) app(.asar)+/g, '$1 app') - ); - } - } - spinner.stop(); - } - - // todo: patch app properties so dark/light mode can be detected - // process.platform === 'darwin' && path.resolve(`${status.executable}/../../Info.plist`) - - spinner = line - .spinner(' * inserting enhancements + recording version') - .loop(); - - for (let file of (await files.readDirDeep(status.executable)) - .map((file) => file.path) - .filter((file) => file.endsWith('.js') && !file.includes('node_modules'))) { - const target = file.slice(status.executable.length + 1); - let replacer = path.resolve( - `${files.__dirname(import.meta)}/replacers/${target}` - ); - if (fs.existsSync(replacer)) { - replacer = (await import(replacer)).default; - await replacer(file); - } - await fsp.appendFile( - file, - `\n\n//notion-enhancer\nrequire('notion-enhancer')('${target}', exports);` - ); - } - - const node_modules = path.resolve( - `${status.executable}/node_modules/notion-enhancer` - ); - await files.copyDir( - `${files.__dirname(import.meta)}/../insert`, - node_modules - ); - await fsp.writeFile( - path.resolve(`${node_modules}/package.json`), - `{ - "name": "notion-enhancer", - "version": "${files.pkgJSON().version}", - "main": "loader.js" - }` - ); - - spinner.stop(); - return true; -} diff --git a/pkg/apply.mjs b/pkg/apply.mjs new file mode 100644 index 0000000..3492b78 --- /dev/null +++ b/pkg/apply.mjs @@ -0,0 +1,93 @@ +/* + * notion-enhancer + * (c) 2021 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +import fs from 'fs'; +import fsp from 'fs/promises'; +import path from 'path'; +import asar from 'asar'; + +import { log, line, spinner } from './cli.mjs'; +import { __dirname, pkg, findNotion, copyDir, readDirDeep } from './helpers.mjs'; + +import check from './check.mjs'; +import remove from './remove.mjs'; + +export default async function ( + notionFolder = findNotion(), + { overwritePrevious = undefined, takeBackup = true } = {} +) { + let status = check(notionFolder); + switch (status.code) { + case 0: // not applied + break; + case 1: // corrupted + throw Error(status.message); + case 2: // same version already applied + log` {grey * notion-enhancer v${status.version} already applied}`; + return true; + case 3: // diff version already applied + log` * ${status.message}`; + const prompt = ['Y', 'y', 'N', 'n', ''], + res = prompt.includes(overwritePrevious) + ? overwritePrevious + : await line.read(' {inverse > overwrite? [Y/n]:} ', prompt); + if (res.toLowerCase() === 'n') { + log` * keeping previous version: exiting`; + return false; + } + await remove(notionFolder, { cache: 'n' }); + status = await check(notionFolder); + } + + let s; + if (status.executable.endsWith('.asar')) { + s = spinner(' * unpacking app files').loop(); + asar.extractAll(status.executable, status.executable.replace(/\.asar$/, '')); + s.stop(); + } + if (takeBackup) { + s = spinner(' * backing up default app').loop(); + if (status.executable.endsWith('.asar')) { + await fsp.rename(status.executable, status.executable + '.bak'); + status.executable = status.executable.replace(/\.asar$/, ''); + } else { + await copyDir(status.executable, status.executable + '.bak'); + } + s.stop(); + } + + s = spinner(' * inserting enhancements').loop(); + const notionFiles = (await readDirDeep(status.executable)) + .map((file) => file.path) + .filter((file) => file.endsWith('.js') && !file.includes('node_modules')); + for (const file of notionFiles) { + const target = file.slice(status.executable.length + 1, -3), + replacer = path.resolve(`${__dirname(import.meta)}/replacers/${target}.mjs`); + if (fs.existsSync(replacer)) { + await (await import(`./replacers/${target}.mjs`)).default(file); + } + await fsp.appendFile( + file, + `\n\n//notion-enhancer\nrequire('notion-enhancer')('${target}', exports);` + ); + } + s.stop(); + + s = spinner(' * recording version').loop(); + const node_modules = path.resolve(`${status.executable}/node_modules/notion-enhancer`); + await copyDir(`${__dirname(import.meta)}/../insert`, node_modules); + await fsp.writeFile( + path.resolve(`${node_modules}/package.json`), + `{ + "name": "notion-enhancer", + "version": "${pkg().version}", + "main": "launcher.js" + }` + ); + s.stop(); + + return true; +} diff --git a/pkg/check.js b/pkg/check.js deleted file mode 100644 index 8b13753..0000000 --- a/pkg/check.js +++ /dev/null @@ -1,75 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -'use strict'; - -import path from 'path'; -import fs from 'fs'; -import { locations, files } from './helpers.js'; - -export default function ({ __notion = locations.notion() }) { - const resolvePath = (filepath) => path.resolve(`${__notion}/${filepath}`), - pathExists = (filepath) => fs.existsSync(resolvePath(filepath)), - enhancerVersion = files.pkgJSON().version; - let notion = { - packed: pathExists('app.asar.bak'), - }; - notion.backup = notion.packed - ? pathExists('app.asar.bak') - ? 'app.asar.bak' - : undefined - : pathExists('app.bak') - ? 'app.bak' - : undefined; - if (!pathExists('app/node_modules/notion-enhancer')) { - notion.executable = pathExists('app') - ? 'app' - : pathExists('app.asar') - ? 'app.asar' - : undefined; - if (!notion.executable && notion.backup) { - notion.restored = true; - notion.backup = resolvePath(notion.backup); - notion.executable = notion.backup.replace(/\.bak$/, ''); - fs.renameSync(notion.backup, notion.executable); - } else { - notion.executable = notion.executable - ? resolvePath(notion.executable) - : ''; - } - return notion.executable - ? { - code: 0, - msg: `notion-enhancer has not been applied.`, - executable: notion.executable, - restored: notion.restored || false, - } - : { - code: 1, - msg: `notion installation has been corrupted: no executable found.`, - restored: notion.restored || false, - }; - } - notion = { - version: files.readJSON( - resolvePath('app/node_modules/notion-enhancer/package.json') - ).version, - executable: resolvePath('app'), - packed: resolvePath(notion.packed), - backup: resolvePath(notion.backup), - }; - return notion.version === enhancerVersion - ? { - code: 2, - msg: `notion-enhancer v${enhancerVersion} applied.`, - ...notion, - } - : { - code: 3, - msg: `notion-enhancer v${notion.version} found applied != v${enhancerVersion} package.`, - ...notion, - }; -} diff --git a/pkg/check.mjs b/pkg/check.mjs new file mode 100644 index 0000000..64aabe6 --- /dev/null +++ b/pkg/check.mjs @@ -0,0 +1,54 @@ +/* + * notion-enhancer + * (c) 2021 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +import fs from 'fs'; +import path from 'path'; + +import { pkg, findNotion, findEnhancerCache } from './helpers.mjs'; + +export default function (notionFolder = findNotion()) { + const resolvePath = (filepath) => path.resolve(`${notionFolder}/${filepath}`), + pathExists = (filepath) => fs.existsSync(resolvePath(filepath)), + enhancerVersion = pkg().version; + + const executableApp = pathExists('app'), + executableAsar = pathExists('app.asar'), + executable = executableApp ? 'app' : executableAsar ? 'app.asar' : undefined, + backupApp = pathExists('app.bak'), + backupAsar = pathExists('app.asar.bak'), + backup = backupApp ? 'app.bak' : backupAsar ? 'app.asar.bak' : undefined, + insert = pathExists('app/node_modules/notion-enhancer'), + insertVersion = insert + ? pkg(resolvePath('app/node_modules/notion-enhancer/package.json')).version + : undefined, + insertCache = findEnhancerCache(); + + const res = { + executable: executable ? resolvePath(executable) : undefined, + backup: backup ? resolvePath(backup) : undefined, + cache: fs.existsSync(insertCache) ? insertCache : undefined, + }; + if (insert) { + if (insertVersion === enhancerVersion) { + res.code = 2; + res.version = enhancerVersion; + res.message = `notion-enhancer v${enhancerVersion} applied.`; + } else { + res.code = 3; + res.version = insertVersion; + res.message = `notion-enhancer v${insertVersion} found applied != v${enhancerVersion} package.`; + } + } else { + if (executable) { + res.code = 0; + res.message = 'notion-enhancer has not been applied.'; + } else { + res.code = 1; + res.message = 'notion installation has been corrupted, no executable found.'; + } + } + return res; +} diff --git a/pkg/cli.mjs b/pkg/cli.mjs new file mode 100644 index 0000000..f3dba4c --- /dev/null +++ b/pkg/cli.mjs @@ -0,0 +1,138 @@ +/* + * notion-enhancer + * (c) 2021 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +'use strict'; + +import chalk from 'chalk'; + +export const log = (strs, ...tags) => { + if (!Array.isArray(strs)) strs = [strs]; + if (!strs.raw) strs.raw = [...strs]; + console.log(chalk(strs, ...tags)); +}; + +export const cursor = { + hide: () => process.stdout.write('\x1b[?25l'), + show: () => process.stdout.write('\x1b[?25h'), +}; + +export const line = { + clear: () => process.stdout.write('\r\x1b[K'), + backspace: (n = 1) => process.stdout.write('\b'.repeat(n)), + write: (string) => process.stdout.write(string), + prev: (n = 1) => process.stdout.write(`\x1b[${n}A`), + next: (n = 1) => process.stdout.write(`\x1b[${n}B`), + forward: (n = 1) => process.stdout.write(`\x1b[${n}C`), + back: (n = 1) => process.stdout.write(`\x1b[${n}D`), + new: () => process.stdout.write('\n'), + async read(prompt = '', values = []) { + let input = ''; + prompt = [prompt]; + prompt.raw = [prompt[0]]; + prompt = chalk(prompt); + this.new(); + do { + this.prev(); + this.clear(); + this.write(prompt); + input = await new Promise((res, rej) => { + process.stdin.resume(); + process.stdin.setEncoding('utf8'); + process.stdin.once('data', (key) => { + process.stdin.pause(); + res(key.slice(0, -1)); + }); + }); + } while (values.length && !values.includes(input)); + return input; + }, +}; + +export let lastSpinner; + +export const spinner = ( + message, + frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'], + complete = '→' +) => { + if (lastSpinner?.interval) lastSpinner.stop(); + const spinner = { + interval: undefined, + i: 0, + step() { + this.i = (this.i + 1) % frames.length; + line.backspace(3); + line.write(chalk` {bold.yellow ${frames[this.i]}} `); + cursor.hide(); + return this; + }, + loop(ms = 80) { + if (this.interval) clearInterval(this.interval); + this.interval = setInterval(() => this.step(), ms); + return this; + }, + stop() { + if (this.interval) { + clearInterval(this.interval); + this.interval = undefined; + } + line.backspace(3); + line.write(chalk` {bold.yellow ${complete}}\n`); + cursor.show(); + return this; + }, + }; + line.write(chalk`${message} {bold.yellow ${frames[spinner.i]}} `); + lastSpinner = spinner; + return spinner; +}; + +export const args = () => process.argv.slice(2).filter((arg) => !arg.startsWith('-')); + +export const options = (aliases = {}) => { + return new Map( + process.argv + .slice(2) + .filter((arg) => arg.startsWith('-')) + .map((arg) => { + let opt, + val = true; + if (arg.startsWith('--')) { + if (arg.includes('=')) { + [opt, val] = arg.slice(2).split(/=((.+)|$)/); + } else opt = arg.slice(2); + } else { + opt = arg.slice(1); + } + if (parseInt(val).toString() === val) val = +val; + if (aliases[opt]) opt = aliases[opt]; + return [opt, val]; + }) + ); +}; + +export const help = ({ + name = process.argv[1].split('/').reverse()[0], + usage = `${name} [options]`, + version = '', + link = '', + commands = [], + options = [], +}) => { + if (version) version = ' v' + version; + const cmdPad = Math.max(...commands.map((cmd) => cmd[0].length)), + optPad = Math.max(...options.map((opt) => opt[0].length)); + commands = commands.map((cmd) => ` ${cmd[0].padEnd(cmdPad)} : ${cmd[1]}`).join('\n'); + options = options.map((opt) => ` ${opt[0].padEnd(optPad)} : ${opt[1]}`).join('\n'); + log`{bold.rgb(245,245,245) ${name}${version}}`; + if (link) log`{grey ${link}}`; + log`\n{bold.rgb(245,245,245) USAGE}`; + log`{yellow $} ${usage}`; + log`\n{bold.rgb(245,245,245) COMMANDS}`; + log`${commands}`; + log`\n{bold.rgb(245,245,245) OPTIONS}`; + log`${options}`; +}; diff --git a/pkg/helpers.js b/pkg/helpers.js deleted file mode 100644 index 0ef4df8..0000000 --- a/pkg/helpers.js +++ /dev/null @@ -1,250 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -'use strict'; - -import os from 'os'; -import fs from 'fs'; -import fsp from 'fs/promises'; -import path from 'path'; -import chalk from 'chalk'; -import { fileURLToPath } from 'url'; -import { execSync } from 'child_process'; - -const platform = - process.platform === 'linux' && - os.release().toLowerCase().includes('microsoft') - ? 'wsl' - : process.platform, - locationCache = {}; - -export const locations = { - notion() { - if (locationCache.notion) return locationCache.notion; - switch (platform) { - case 'darwin': - locationCache.notion = '/Applications/Notion.app/Contents/Resources'; - break; - case 'win32': - locationCache.notion = - process.env.LOCALAPPDATA + '\\Programs\\Notion\\resources'; - break; - case 'wsl': - const [drive, ...windowsPath] = execSync( - 'cmd.exe /c echo %localappdata%', - { - encoding: 'utf8', - stdio: 'pipe', - } - ); - locationCache.notion = `/mnt/${drive.toLowerCase()}${windowsPath - .slice(1, -2) - .join('') - .replace(/\\/g, '/')}/Programs/Notion/resources`; - break; - case 'linux': - for (let folder of [ - '/usr/lib/notion-desktop/resources', // https://github.com/davidbailey00/notion-deb-builder/ - '/opt/notion-app', // https://aur.archlinux.org/packages/notion-app/ - '/opt/notion', // https://github.com/jaredallard/notion-app - ]) - if (fs.existsSync(folder)) locationCache.notion = folder; - } - return locationCache.notion; - }, - enhancer() { - if (locationCache.enhancer) return locationCache.enhancer; - let home = os.homedir(); - if (platform === 'wsl') { - const [drive, ...windowsPath] = execSync( - 'cmd.exe /c echo %systemdrive%%homepath%', - { - encoding: 'utf8', - stdio: 'pipe', - } - ); - home = `/mnt/${drive.toLowerCase()}${windowsPath - .slice(1, -2) - .join('') - .replace(/\\/g, '/')}`; - } - locationCache.enhancer = path.resolve(`${home}/.notion-enhancer`); - return locationCache.enhancer; - }, - config() { - return `${this.enhancer()}/config`; - }, - cache() { - return `${this.enhancer()}/cache`; - }, -}; - -export const line = { - chalk: chalk, - style: { - title: chalk.bold.rgb(245, 245, 245), - }, - clear: () => process.stdout.write('\r\x1b[K'), - write: (string) => process.stdout.write(string), - prev: (n = 1) => process.stdout.write(`\x1b[${n}A`), - next: (n = 1) => process.stdout.write(`\x1b[${n}B`), - forward: (n = 1) => process.stdout.write(`\x1b[${n}C`), - back: (n = 1) => process.stdout.write(`\x1b[${n}D`), - new: () => process.stdout.write('\n'), - async read(prompt = '', values = []) { - let input = ''; - this.write(prompt); - this.new(); - do { - for (let i = 0; i < prompt.split('\n').length; i++) { - this.prev(); - this.clear(); - } - this.write(prompt); - input = await new Promise((res, rej) => { - process.stdin.resume(); - process.stdin.setEncoding('utf8'); - process.stdin.once('data', (key) => { - process.stdin.pause(); - res(key.slice(0, -1)); - }); - }); - } while (values.length && !values.includes(input)); - return input; - }, - spinner( - message, - frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'], - complete = '→' - ) { - const spinner = { - message, - frames, - complete, - interval: undefined, - i: 0, - }; - spinner.step = () => { - spinner.i = (spinner.i + 1) % spinner.frames.length; - this.clear(); - this.write( - line.chalk`${spinner.message} {bold.yellow ${frames[spinner.i]}} ` - ); - return spinner; - }; - spinner.loop = (ms = 80) => { - if (!spinner.interval) spinner.interval = setInterval(spinner.step, ms); - return spinner; - }; - spinner.stop = () => { - if (spinner.interval) clearInterval(spinner.interval); - this.clear(); - this.write(line.chalk`${spinner.message} {bold.yellow ${complete}}\r\n`); - return spinner; - }; - spinner.step(); - return spinner; - }, -}; - -export const cli = { - args() { - return process.argv.slice(2).filter((arg) => !arg.startsWith('-')); - }, - options(aliases = {}) { - return new Map( - process.argv - .slice(2) - .filter((arg) => arg.startsWith('-')) - .map((arg) => { - let opt, - val = true; - if (arg.startsWith('--')) { - if (arg.includes('=')) { - [opt, val] = arg.slice(2).split(/=((.+)|$)/); - } else opt = arg.slice(2); - } else { - opt = arg.slice(1); - } - if (parseInt(val).toString() === val) val = +val; - if (aliases[opt]) opt = aliases[opt]; - return [opt, val]; - }) - ); - }, - help({ - name = process.argv[1].split('/').reverse()[0], - usage = `${name} [options]`, - version = '', - link = '', - commands = [], - options = [], - }) { - if (version) version = ' v' + version; - if (link) link = '\n' + link; - const cmdPad = Math.max(...commands.map((cmd) => cmd[0].length)); - commands = commands - .map((cmd) => ` ${cmd[0].padEnd(cmdPad)} : ${cmd[1]}`) - .join('\n'); - const optPad = Math.max(...options.map((opt) => opt[0].length)); - options = options - .map((opt) => ` ${opt[0].padEnd(optPad)} : ${opt[1]}`) - .join('\n'); - return `${line.style.title(name)}${line.style.title(version)}${link} -\n${line.style.title('USAGE')} - ${line.chalk.yellow('$')} ${usage} -\n${line.style.title('COMMANDS')}\n${commands} -\n${line.style.title('OPTIONS')}\n${options}`; - }, -}; - -export const files = { - __dirname: (meta) => path.dirname(fileURLToPath(meta.url)), - readJSON(file, defaults = {}) { - try { - return { - ...defaults, - ...JSON.parse(fs.readFileSync(path.resolve(file))), - }; - } catch { - return defaults; - } - }, - pkgJSON() { - return this.readJSON(`${this.__dirname(import.meta)}/../package.json`); - }, - async copyDir(src, dest) { - src = path.resolve(src); - dest = path.resolve(dest); - if (!fs.existsSync(dest)) await fsp.mkdir(dest); - for (let file of await fsp.readdir(src)) { - const stat = await fsp.lstat(path.join(src, file)); - if (stat.isDirectory()) { - await this.copyDir(path.join(src, file), path.join(dest, file)); - } else if (stat.isSymbolicLink()) { - await fsp.symlink( - await fsp.readlink(path.join(src, file)), - path.join(dest, file) - ); - } else await fsp.copyFile(path.join(src, file), path.join(dest, file)); - } - return true; - }, - async readDirDeep(dir) { - dir = path.resolve(dir); - let files = []; - for (let file of await fsp.readdir(dir)) { - file = path.join(dir, file); - const stat = await fsp.lstat(file); - if (stat.isDirectory()) { - files = files.concat(await this.readDirDeep(file)); - } else if (stat.isSymbolicLink()) { - files.push({ type: 'symbolic', path: file }); - } else files.push({ type: 'file', path: file }); - } - return files; - }, -}; diff --git a/pkg/helpers.mjs b/pkg/helpers.mjs new file mode 100644 index 0000000..6b7fc58 --- /dev/null +++ b/pkg/helpers.mjs @@ -0,0 +1,110 @@ +/* + * notion-enhancer + * (c) 2021 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +import os from 'os'; +import fs from 'fs'; +import fsp from 'fs/promises'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { execSync } from 'child_process'; + +export const __dirname = (meta) => path.dirname(fileURLToPath(meta.url)); + +export const pkg = (filepath = `${__dirname(import.meta)}/../package.json`) => { + try { + return JSON.parse(fs.readFileSync(path.resolve(filepath))); + } catch { + return {}; + } +}; + +export const platform = + process.platform === 'linux' && os.release().toLowerCase().includes('microsoft') + ? 'wsl' + : process.platform; + +let __notion; +export const findNotion = () => { + if (__notion) return __notion; + switch (platform) { + case 'darwin': + __notion = ''; + const userInstall = `/Users/${process.env.USER}/Applications/Notion.app/Contents/Resources`, + globalInstall = '/Applications/Notion.app/Contents/Resources'; + if (fs.existsSync(userInstall)) { + __notion = userInstall; + } else if (fs.existsSync(globalInstall)) { + __notion = globalInstall; + } + break; + case 'win32': + __notion = process.env.LOCALAPPDATA + '\\Programs\\Notion\\resources'; + break; + case 'wsl': + const [drive, ...windowsPath] = execSync('cmd.exe /c echo %localappdata%', { + encoding: 'utf8', + stdio: 'pipe', + }); + __notion = `/mnt/${drive.toLowerCase()}${windowsPath + .slice(1, -2) + .join('') + .replace(/\\/g, '/')}/Programs/Notion/resources`; + break; + case 'linux': + // https://aur.archlinux.org/packages/notion-app/ + if (fs.existsSync('/opt/notion-app')) __notion = '/opt/notion-app'; + } + return __notion; +}; + +let __enhancerCache; +export const findEnhancerCache = () => { + if (__enhancerCache) return __enhancerCache; + let home = os.homedir(); + if (platform === 'wsl') { + const [drive, ...windowsPath] = execSync('cmd.exe /c echo %systemdrive%%homepath%', { + encoding: 'utf8', + stdio: 'pipe', + }); + home = `/mnt/${drive.toLowerCase()}${windowsPath + .slice(1, -2) + .join('') + .replace(/\\/g, '/')}`; + } + __enhancerCache = path.resolve(`${home}/.notion-enhancer`); + return __enhancerCache; +}; + +export const copyDir = async (src, dest) => { + src = path.resolve(src); + dest = path.resolve(dest); + if (!fs.existsSync(dest)) await fsp.mkdir(dest); + for (let file of await fsp.readdir(src)) { + const stat = await fsp.lstat(path.join(src, file)); + if (stat.isDirectory()) { + await copyDir(path.join(src, file), path.join(dest, file)); + } else if (stat.isSymbolicLink()) { + await fsp.symlink(await fsp.readlink(path.join(src, file)), path.join(dest, file)); + } else await fsp.copyFile(path.join(src, file), path.join(dest, file)); + } + return true; +}; + +export const readDirDeep = async (dir) => { + dir = path.resolve(dir); + let files = []; + for (let file of await fsp.readdir(dir)) { + if (['node_modules', '.git'].includes(file)) continue; + file = path.join(dir, file); + const stat = await fsp.lstat(file); + if (stat.isDirectory()) { + files = files.concat(await readDirDeep(file)); + } else if (stat.isSymbolicLink()) { + files.push({ type: 'symbolic', path: file }); + } else files.push({ type: 'file', path: file }); + } + return files; +}; diff --git a/pkg/remove.js b/pkg/remove.js deleted file mode 100644 index 9e9a106..0000000 --- a/pkg/remove.js +++ /dev/null @@ -1,107 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -'use strict'; - -import fs from 'fs'; -import fsp from 'fs/promises'; -import check from './check.js'; -import { locations, line } from './helpers.js'; - -export default async function ({ - deleteConfig, - deleteCache, - __notion = locations.notion(), -} = {}) { - const status = check({ __notion }); - let spinner; - - if (status.code > 1 && status.executable) { - spinner = line.spinner(' * removing enhancements').loop(); - await fsp.rmdir(status.executable, { recursive: true }); - spinner.stop(); - } else console.warn(line.chalk.grey(' * enhancements not found: skipping')); - - if (status.restored || status.backup) { - spinner = line.spinner(' * restoring backup').loop(); - if (status.backup) - await fsp.rename(status.backup, status.backup.replace(/\.bak$/, '')); - spinner.stop(); - } else console.warn(line.chalk.grey(' * backup not found: skipping')); - - const prompt = { - prefix: line.chalk` {inverse > delete? [Y/n]:} `, - responses: ['Y', 'y', 'N', 'n', ''], - }; - for (let folder of [ - { - description: 'config folder', - name: 'config', - action: deleteConfig, - location: locations.config(), - }, - { - description: 'module cache', - name: 'cache', - action: deleteCache, - location: locations.cache(), - }, - ]) { - if (fs.existsSync(folder.location)) { - console.info(` * ${folder.description} ${folder.location} found`); - const action = prompt.responses.includes(folder.action) - ? folder.action - : (await line.read(prompt.prefix, prompt.responses)).toLowerCase(); - if (action === folder.action) - console.info( - `${prompt.prefix}${folder.action} ${line.chalk.grey('(auto-filled)')}` - ); - if (action !== 'n') { - spinner = line.spinner(` * deleting ${folder.name}`).loop(); - await fsp.rmdir(folder.location, { recursive: true }); - spinner.stop(); - } else console.info(` * keeping ${folder.name}`); - } else - console.warn( - line.chalk.grey(` * ${folder.description} not found: skipping`) - ); - } - - if ( - !fs.existsSync(locations.config()) && - !fs.existsSync(locations.cache()) && - fs.existsSync(locations.enhancer()) - ) - fsp.rmdir(locations.enhancer()).catch((err) => {}); - - if ( - status.packed && - [ - '/opt/notion-app', // https://aur.archlinux.org/packages/notion-app/ - '/opt/notion', // https://github.com/jaredallard/notion-app - ].includes(__notion) - ) { - spinner = line - .spinner( - line.chalk` * patching app launcher {grey (notion-app linux wrappers only)}` - ) - .loop(); - for (let bin of [ - `/usr/bin/${__notion.split('/')[2]}`, - `${__notion}/${__notion.split('/')[2]}`, - ]) { - const script = await fsp.readFile(bin, 'utf8'); - if (!script.includes('app.asar')) { - await fsp.writeFile( - bin, - script.replace(/(electron\d*) app(.asar)+/g, '$1 app.asar') - ); - } - } - spinner.stop(); - } - return true; -} diff --git a/pkg/remove.mjs b/pkg/remove.mjs new file mode 100644 index 0000000..6fcfa35 --- /dev/null +++ b/pkg/remove.mjs @@ -0,0 +1,46 @@ +/* + * notion-enhancer + * (c) 2021 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +import fsp from 'fs/promises'; + +import { log, spinner, line } from './cli.mjs'; +import { findNotion } from './helpers.mjs'; + +import check from './check.mjs'; + +export default async function (notionFolder = findNotion(), { delCache = undefined } = {}) { + const status = check(notionFolder); + + let s; + if (status.code > 1 && status.executable) { + s = spinner(' * removing enhancements').loop(); + await fsp.rm(status.executable, { recursive: true }); + s.stop(); + } else log` {grey * enhancements not found: skipping}`; + + if (status.backup) { + s = spinner(' * restoring backup').loop(); + await fsp.rename(status.backup, status.backup.replace(/\.bak$/, '')); + s.stop(); + } else log` {grey * backup not found: skipping}`; + + if (status.cache) { + log` * enhancer cache found: ${status.cache}`; + const prompt = ['Y', 'y', 'N', 'n', '']; + let res; + if (prompt.includes(delCache)) { + res = delCache; + log` {inverse > delete? [Y/n]:} ${delCache} {grey (auto-filled)}`; + } else res = await line.read(' {inverse > delete? [Y/n]:} ', prompt); + if (res.toLowerCase() === 'n') { + log` * keeping enhancer cache`; + } else { + s = spinner(' * deleting enhancer cache').loop(); + await fsp.rm(status.cache, { recursive: true }); + s.stop(); + } + } else log` {grey * enhancer cache not found: skipping}`; +} diff --git a/pkg/replacers/main/main.js b/pkg/replacers/main/main.mjs similarity index 82% rename from pkg/replacers/main/main.js rename to pkg/replacers/main/main.mjs index c9ad5fd..ae80308 100644 --- a/pkg/replacers/main/main.js +++ b/pkg/replacers/main/main.mjs @@ -8,12 +8,12 @@ import fsp from 'fs/promises'; -export default async function (file) { +export default async function (filepath) { // https://github.com/notion-enhancer/notion-enhancer/issues/160 // enable the notion:// url scheme/protocol on linux - const contents = await fsp.readFile(file, 'utf8'); + const contents = await fsp.readFile(filepath, 'utf8'); await fsp.writeFile( - file, + filepath, contents.replace( /process.platform === "win32"/g, 'process.platform === "win32" || process.platform === "linux"' diff --git a/pkg/replacers/main/schemeHandler.js b/pkg/replacers/main/schemeHandler.js deleted file mode 100644 index 4ab42d2..0000000 --- a/pkg/replacers/main/schemeHandler.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (https://dragonwocky.me/notion-enhancer) under the MIT license - */ - -'use strict'; - -import fsp from 'fs/promises'; - -export default async function (file) { - // https://github.com/notion-enhancer/notion-enhancer/issues/160 - // enable the notion:// url scheme/protocol on linux - const contents = await fsp.readFile(file, 'utf8'); - await fsp.writeFile( - file, - contents.replace( - /registerStreamProtocol\(config_1\.default\.protocol, async \(req, callback\) => {/, - `registerStreamProtocol(config_1.default.protocol, async (req, callback) => { - if (req.url.startsWith('notion://enhancer/')) { - const { enhancements } = require('notion-enhancer/helpers'), - query = req.url.replace(/^notion:\\/\\/enhancer\\//, '').split('/'), - mod = enhancements.get(query.shift()); - if (mod && !mod.error) { - callback( - fs.createReadStream( - require('path').resolve(\`\${mod.source}/\${query.join('/')}\`) - ) - ); - return; - } - }` - ) - ); - return true; -} diff --git a/temp/core/app.css b/temp/core/app.css deleted file mode 100644 index 06ffc57..0000000 --- a/temp/core/app.css +++ /dev/null @@ -1,9 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -@import './css/theme.css'; -@import './css/scrollbars.css'; -@import './css/titlebar.css'; diff --git a/temp/core/buttons.js b/temp/core/buttons.js deleted file mode 100644 index d132722..0000000 --- a/temp/core/buttons.js +++ /dev/null @@ -1,106 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -'use strict'; - -module.exports = (store) => { - const helpers = require('../../pkg/helpers.js'), - path = require('path'), - fs = require('fs-extra'), - browser = require('electron').remote.getCurrentWindow(), - is_mac = process.platform === 'darwin', - buttons = { - element: helpers.createElement('
'), - insert: [ - ...((store('mods')['72886371-dada-49a7-9afc-9f275ecf29d3'] || {}) - .enabled - ? ['alwaysontop'] - : []), - ...(store().frameless && !store().tiling_mode && !is_mac - ? ['minimize', 'maximize', 'close'] - : []), - ], - icons: { - raw: { - alwaysontop: { - on: fs.readFile( - path.resolve(`${__dirname}/icons/alwaysontop_on.svg`) - ), - off: fs.readFile( - path.resolve(`${__dirname}/icons/alwaysontop_off.svg`) - ), - }, - minimize: fs.readFile( - path.resolve(`${__dirname}/icons/minimize.svg`) - ), - maximize: { - on: fs.readFile(path.resolve(`${__dirname}/icons/maximize_on.svg`)), - off: fs.readFile( - path.resolve(`${__dirname}/icons/maximize_off.svg`) - ), - }, - close: fs.readFile(path.resolve(`${__dirname}/icons/close.svg`)), - }, - alwaysontop() { - return browser.isAlwaysOnTop() - ? buttons.icons.raw.alwaysontop.on - : buttons.icons.raw.alwaysontop.off; // '🠙' : '🠛' - }, - minimize() { - return buttons.icons.raw.minimize; // '⚊' - }, - maximize() { - return browser.isMaximized() - ? buttons.icons.raw.maximize.on - : buttons.icons.raw.maximize.off; // '🗗' : '🗖' - }, - close() { - return buttons.icons.raw.close; // '⨉' - }, - }, - actions: { - async alwaysontop() { - browser.setAlwaysOnTop(!browser.isAlwaysOnTop()); - this.innerHTML = await buttons.icons.alwaysontop(); - }, - minimize() { - browser.minimize(); - }, - async maximize() { - browser.isMaximized() ? browser.unmaximize() : browser.maximize(); - this.innerHTML = await buttons.icons.maximize(); - }, - close() { - browser.close(); - }, - }, - }; - - if (!buttons.insert.includes('alwaysontop')) browser.setAlwaysOnTop(false); - - (async () => { - for (let btn of buttons.insert) { - buttons.element.innerHTML += ``; - } - for (let btn of buttons.insert) { - buttons.element.querySelector(`.window-button.btn-${btn}`).onclick = - buttons.actions[btn]; - } - if (store().frameless && !store().tiling_mode && !is_mac) { - window.addEventListener('resize', (event) => { - Promise.resolve(buttons.icons.maximize()).then((icon) => { - icon = icon.toString(); - const el = buttons.element.querySelector('.btn-maximize'); - if (el.innerHTML != icon) el.innerHTML = icon; - }); - }); - } - })(); - - return buttons; -}; diff --git a/temp/core/client.js b/temp/core/client.js deleted file mode 100644 index a6eddd0..0000000 --- a/temp/core/client.js +++ /dev/null @@ -1,269 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * under the MIT license - */ - -'use strict'; - -module.exports = (store, __exports) => { - const electron = require('electron'), - helpers = require('../../pkg/helpers.js'), - notionIpc = require(`${helpers - .getNotionResources() - .replace(/\\/g, '/')}/app/helpers/notionIpc.js`), - { toKeyEvent } = require('keyboardevent-from-electron-accelerator'), - tabsEnabled = (store('mods')['e1692c29-475e-437b-b7ff-3eee872e1a42'] || {}) - .enabled; - - document.defaultView.addEventListener('keyup', (event) => { - // additional hotkeys - if (event.key === 'F5') location.reload(); - // open menu on hotkey toggle - if (store().menu_toggle) { - const hotkey = { - ctrlKey: false, - metaKey: false, - altKey: false, - shiftKey: false, - ...toKeyEvent(store().menu_toggle), - }; - let triggered = true; - for (let prop in hotkey) - if ( - hotkey[prop] !== event[prop] && - !(prop === 'key' && event[prop] === 'Dead') - ) - triggered = false; - if (triggered) electron.ipcRenderer.send('enhancer:open-menu'); - } - if (tabsEnabled) { - const tabStore = () => store('e1692c29-475e-437b-b7ff-3eee872e1a42'); - if (tabStore().select_modifier) { - // switch between tabs via key modifier - const select_tab_modifier = { - ctrlKey: false, - metaKey: false, - altKey: false, - shiftKey: false, - ...toKeyEvent(tabStore().select_modifier), - }; - let triggered = true; - for (let prop in select_tab_modifier) - if (select_tab_modifier[prop] !== event[prop]) triggered = false; - if ( - triggered && - [ - '1', - '2', - '3', - '4', - '5', - '6', - '7', - '8', - '9', - 'ArrowRight', - 'ArrowLeft', - ].includes(event.key) - ) - electron.ipcRenderer.sendToHost('enhancer:select-tab', event.key); - } - if (tabStore().new_tab) { - // create/close tab keybindings - const new_tab_keybinding = { - ctrlKey: false, - metaKey: false, - altKey: false, - shiftKey: false, - ...toKeyEvent(tabStore().new_tab), - }; - let triggered = true; - for (let prop in new_tab_keybinding) - if (new_tab_keybinding[prop] !== event[prop]) triggered = false; - if (triggered) electron.ipcRenderer.sendToHost('enhancer:new-tab'); - } - if (tabStore().close_tab) { - const close_tab_keybinding = { - ctrlKey: false, - metaKey: false, - altKey: false, - shiftKey: false, - ...toKeyEvent(tabStore().close_tab), - }; - let triggered = true; - for (let prop in close_tab_keybinding) - if (close_tab_keybinding[prop] !== event[prop]) triggered = false; - if (triggered) electron.ipcRenderer.sendToHost('enhancer:close-tab'); - } - } - }); - - const attempt_interval = setInterval(enhance, 500); - async function enhance() { - if ( - !document.querySelector('.notion-frame') || - !document.querySelector('.notion-sidebar') || - !document.querySelector('.notion-topbar') - ) - return; - clearInterval(attempt_interval); - - // frameless - if (store().frameless && !store().tiling_mode && !tabsEnabled) { - document.body.classList.add('frameless'); - // draggable area - document - .querySelector('.notion-topbar') - .prepend(helpers.createElement('
')); - } - - // window buttons - if (!tabsEnabled) { - const buttons = require('./buttons.js')(store); - document - .querySelector('.notion-topbar > div[style*="display: flex"]') - .appendChild(buttons.element); - } - document - .querySelector('.notion-history-back-button') - .parentElement.nextElementSibling.classList.add( - 'notion-topbar-breadcrumb' - ); - document - .querySelector('.notion-topbar-share-menu') - .parentElement.classList.add('notion-topbar-actions'); - - const getStyle = (prop) => - getComputedStyle( - document.querySelector('.notion-app-inner') - ).getPropertyValue(prop); - - // external theming - document.defaultView.addEventListener('keydown', (event) => { - if ((event.ctrlKey || event.metaKey) && event.key === 'f') { - notionIpc.sendNotionToIndex('search:set-theme', { - 'mode': document.querySelector('.notion-dark-theme') - ? 'dark' - : 'light', - 'colors': { - 'white': getStyle('--theme--option_active-color'), - 'blue': getStyle('--theme--option_active-background'), - }, - 'borderRadius': 3, - 'textColor': getStyle('--theme--text'), - 'popoverBackgroundColor': getStyle('--theme--card'), - 'popoverBoxShadow': getStyle('--theme--box-shadow_strong'), - 'inputBoxShadow': `box-shadow: ${getStyle( - `--theme--primary` - )} 0px 0px 0px 1px inset, ${getStyle( - `--theme--primary_hover` - )} 0px 0px 0px 2px !important`, - 'inputBackgroundColor': getStyle('--theme--main'), - 'dividerColor': getStyle('--theme--table-border'), - 'shadowOpacity': 0.2, - }); - } - }); - - function setAppTheme() { - const theme = document.querySelector('.notion-dark-theme') - ? 'dark' - : 'light'; - electron.ipcRenderer.send('enhancer:set-app-theme', theme); - } - setAppTheme(); - new MutationObserver(setAppTheme).observe( - document.querySelector('.notion-app-inner'), - { attributes: true } - ); - electron.ipcRenderer.on('enhancer:get-app-theme', setAppTheme); - - if (tabsEnabled) { - let tab_title = { img: '', emoji: '', text: '' }; - if (process.platform === 'darwin') - document - .querySelector('.notion-sidebar [style*="37px"]:empty') - .remove(); - const TITLE_OBSERVER = new MutationObserver(() => - __electronApi.setWindowTitle('notion.so') - ); - __electronApi.setWindowTitle = (title) => { - const $container = - document.querySelector( - '.notion-peek-renderer [style="padding-left: calc(126px + env(safe-area-inset-left)); padding-right: calc(126px + env(safe-area-inset-right)); max-width: 100%; width: 100%;"]' - ) || - document.querySelector( - '.notion-frame [style="padding-left: calc(96px + env(safe-area-inset-left)); padding-right: calc(96px + env(safe-area-inset-right)); max-width: 100%; margin-bottom: 8px; width: 100%;"]' - ) || - document.querySelector('.notion-peek-renderer') || - document.querySelector('.notion-frame'), - icon = $container.querySelector( - '.notion-record-icon img:not([src^="data:"])' - ), - img = - icon && icon.getAttribute('src') - ? `` - : '', - emoji = icon ? icon.getAttribute('aria-label') : ''; - let text = $container.querySelector('[placeholder="Untitled"]'); - text = text - ? text.innerText || 'Untitled' - : [ - setTimeout(() => __electronApi.setWindowTitle(title), 250), - title, - ][1]; - TITLE_OBSERVER.disconnect(); - TITLE_OBSERVER.observe($container, { - childList: true, - subtree: true, - characterData: true, - attributes: true, - }); - if ( - tab_title.img !== img || - tab_title.emoji !== emoji || - tab_title.text !== text - ) { - tab_title = { - img, - emoji, - text, - }; - electron.ipcRenderer.sendToHost('enhancer:set-tab-title', tab_title); - } - }; - __electronApi.openInNewWindow = (urlPath) => { - electron.ipcRenderer.sendToHost( - 'enhancer:new-tab', - `notion://www.notion.so${urlPath}` - ); - }; - } else if (store().frameless && !store().tiling_mode) { - let sidebar_width; - function setSidebarWidth(list) { - const new_sidebar_width = - list[0].target.style.height === 'auto' - ? '0px' - : list[0].target.style.width; - if (new_sidebar_width !== sidebar_width) { - sidebar_width = new_sidebar_width; - electron.ipcRenderer.sendToHost( - 'enhancer:sidebar-width', - sidebar_width - ); - } - } - new MutationObserver(setSidebarWidth).observe( - document.querySelector('.notion-sidebar'), - { attributes: true } - ); - setSidebarWidth([{ target: document.querySelector('.notion-sidebar') }]); - } - } -}; diff --git a/temp/core/colorjoe/min.js b/temp/core/colorjoe/min.js deleted file mode 100644 index 0d60153..0000000 --- a/temp/core/colorjoe/min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! colorjoe - v4.1.1 - Juho Vepsalainen - MIT -https://bebraw.github.com/colorjoe - 2020-01-27 */ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.colorjoe=n()}(this,function(){"use strict";"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function e(e,n){return e(n={exports:{}},n.exports),n.exports}var p=e(function(e,n){e.exports=function(){function r(e,n){e?(t(e,n,"touchstart","touchmove","touchend"),t(e,n,"mousedown","mousemove","mouseup")):console.warn("drag is missing elem!")}return r.xyslider=function(e){var n=i(e.class||"",e.parent),t=i("pointer",n);return i("shape shape1",t),i("shape shape2",t),i("bg bg1",n),i("bg bg2",n),r(n,a(e.cbs,t)),{background:n,pointer:t}},r.slider=function(e){var n=i(e.class,e.parent),t=i("pointer",n);return i("shape",t),i("bg",n),r(n,a(e.cbs,t)),{background:n,pointer:t}},r;function a(e,t){var n={};for(var r in e)n[r]=a(e[r]);function a(n){return function(e){e.pointer=t,n(e)}}return n}function i(e,n){return t="div",r=e,a=n,i=document.createElement(t),r&&(i.className=r),a.appendChild(i),i;var t,r,a,i}function t(r,e,n,a,i){var t,o,u,s=(e=(t=e)?{begin:t.begin||p,change:t.change||p,end:t.end||p}:{begin:function(e){o={x:e.elem.offsetLeft,y:e.elem.offsetTop},u=e.cursor},change:function(e){d(e.elem,"left",o.x+e.cursor.x-u.x+"px"),d(e.elem,"top",o.y+e.cursor.y-u.y+"px")},end:p}).begin,l=e.change,f=e.end;c(r,n,function(n){var t=function(e){var n=Array.prototype.slice,t=n.apply(arguments,[1]);return function(){return e.apply(null,t.concat(n.apply(arguments)))}}(g,l,r);c(document,a,t),c(document,i,function e(){h(document,a,t),h(document,i,e),g(f,r,n)}),g(s,r,n)})}function c(e,n,t){var r=!1;try{var a=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,a),window.removeEventListener("testPassive",null,a)}catch(e){}e.addEventListener(n,t,!!r&&{passive:!1})}function h(e,n,t){e.removeEventListener(n,t,!1)}function d(e,n,t){e.style[n]=t}function p(){}function g(e,n,t){t.preventDefault();var r,a,i,o={x:(r=n.getBoundingClientRect()).left,y:r.top},u=n.clientWidth,s=n.clientHeight,l={x:(i=t,(i.touches?i.touches[i.touches.length-1]:i).clientX),y:(a=t,(a.touches?a.touches[a.touches.length-1]:a).clientY)},f=(l.x-o.x)/u,c=(l.y-o.y)/s;e({x:isNaN(f)?0:f,y:isNaN(c)?0:c,cursor:l,elem:n,e:t})}}()}),a=e(function(e,n){e.exports=function(){function c(e){if(Array.isArray(e)){if("string"==typeof e[0]&&"function"==typeof c[e[0]])return new c[e[0]](e.slice(1,e.length));if(4===e.length)return new c.RGB(e[0]/255,e[1]/255,e[2]/255,e[3]/255)}else if("string"==typeof e){var n=e.toLowerCase();c.namedColors[n]&&(e="#"+c.namedColors[n]),"transparent"===n&&(e="rgba(0,0,0,0)");var t=e.match(p);if(t){var r=t[1].toUpperCase(),a=h(t[8])?t[8]:parseFloat(t[8]),i="H"===r[0],o=t[3]?100:i?360:255,u=t[5]||i?100:255,s=t[7]||i?100:255;if(h(c[r]))throw new Error("color."+r+" is not installed.");return new c[r](parseFloat(t[2])/o,parseFloat(t[4])/u,parseFloat(t[6])/s,a)}e.length<6&&(e=e.replace(/^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i,"$1$1$2$2$3$3"));var l=e.match(/^#?([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$/i);if(l)return new c.RGB(parseInt(l[1],16)/255,parseInt(l[2],16)/255,parseInt(l[3],16)/255);if(c.CMYK){var f=e.match(new RegExp("^cmyk\\("+d.source+","+d.source+","+d.source+","+d.source+"\\)$","i"));if(f)return new c.CMYK(parseFloat(f[1])/100,parseFloat(f[2])/100,parseFloat(f[3])/100,parseFloat(f[4])/100)}}else if("object"==typeof e&&e.isColor)return e;return!1}var u=[],h=function(e){return void 0===e},e=/\s*(\.\d+|\d+(?:\.\d+)?)(%)?\s*/,d=/\s*(\.\d+|100|\d?\d(?:\.\d+)?)%\s*/,p=new RegExp("^(rgb|hsl|hsv)a?\\("+e.source+","+e.source+","+e.source+"(?:,"+/\s*(\.\d+|\d+(?:\.\d+)?)\s*/.source+")?\\)$","i");c.namedColors={},c.installColorSpace=function(a,i,e){function n(e,r){var n={};for(var t in n[r.toLowerCase()]=function(){return this.rgb()[r.toLowerCase()]()},c[r].propertyNames.forEach(function(t){var e="black"===t?"k":t.charAt(0);n[t]=n[e]=function(e,n){return this[r.toLowerCase()]()[t](e,n)}}),n)n.hasOwnProperty(t)&&void 0===c[e].prototype[t]&&(c[e].prototype[t]=n[t])}(c[a]=function(e){var r=Array.isArray(e)?e:arguments;i.forEach(function(e,n){var t=r[n];if("alpha"===e)this._alpha=isNaN(t)||1n)return!1;return!0},r.toJSON=function(){return[a].concat(i.map(function(e){return this["_"+e]},this))},e)if(e.hasOwnProperty(t)){var o=t.match(/^from(.*)$/);o?c[o[1].toUpperCase()].prototype[a.toLowerCase()]=e[t]:r[t]=e[t]}return r[a.toLowerCase()]=function(){return this},r.toString=function(){return"["+a+" "+i.map(function(e){return this["_"+e]},this).join(", ")+"]"},i.forEach(function(t){var e="black"===t?"k":t.charAt(0);r[t]=r[e]=function(n,e){return void 0===n?this["_"+t]:e?new this.constructor(i.map(function(e){return this["_"+e]+(t===e?n:0)},this)):new this.constructor(i.map(function(e){return t===e?n:this["_"+e]},this))}}),u.forEach(function(e){n(a,e),n(e,a)}),u.push(a),c},c.pluginList=[],c.use=function(e){return-1===c.pluginList.indexOf(e)&&(this.pluginList.push(e),e(c)),c},c.installMethod=function(n,t){return u.forEach(function(e){c[e].prototype[n]=t}),this},c.installColorSpace("RGB",["red","green","blue","alpha"],{hex:function(){var e=(65536*Math.round(255*this._red)+256*Math.round(255*this._green)+Math.round(255*this._blue)).toString(16);return"#"+"00000".substr(0,6-e.length)+e},hexa:function(){var e=Math.round(255*this._alpha).toString(16);return"#"+"00".substr(0,2-e.length)+e+this.hex().substr(1,6)},css:function(){return"rgb("+Math.round(255*this._red)+","+Math.round(255*this._green)+","+Math.round(255*this._blue)+")"},cssa:function(){return"rgba("+Math.round(255*this._red)+","+Math.round(255*this._green)+","+Math.round(255*this._blue)+","+this._alpha+")"}});var n=function(a){a.installColorSpace("XYZ",["x","y","z","alpha"],{fromRgb:function(){var e=function(e){return.04045t[e]?r[e]=(n[e]-t[e])/(1-t[e]):n[e]>t[e]?r[e]=(t[e]-n[e])/t[e]:r[e]=0}),r._red>r._green?r._red>r._blue?n._alpha=r._red:n._alpha=r._blue:r._green>r._blue?n._alpha=r._green:n._alpha=r._blue,n._alpha<1e-10||(a.forEach(function(e){n[e]=(n[e]-t[e])/n._alpha+t[e]}),n._alpha*=r._alpha),n})})}()}),g=n(b,"div");function b(e,n,t){var r=document.createElement(e);return r.className=n,t.appendChild(r),r}function n(e){var n=Array.prototype.slice,t=n.apply(arguments,[1]);return function(){return e.apply(null,t.concat(n.apply(arguments)))}}function t(e,n,t){return Math.min(Math.max(e,n),t)}var v={clamp:t,e:b,div:g,partial:n,labelInput:function(e,n,t,r){var a="colorPickerInput"+Math.floor(1001*Math.random()),i=g(e,t);return{label:(c=n,h=i,d=a,p=b("label","",h),p.innerHTML=c,d&&p.setAttribute("for",d),p),input:(o="text",u=i,s=r,l=a,f=b("input","",u),f.type=o,s&&(f.maxLength=s),l&&f.setAttribute("id",l),s&&(f.maxLength=s),f)};var o,u,s,l,f;var c,h,d,p},X:function(e,n){e.style.left=t(100*n,0,100)+"%"},Y:function(e,n){e.style.top=t(100*n,0,100)+"%"},BG:function(e,n){e.style.background=n}};var r={currentColor:function(e){var n=v.div("currentColorContainer",e),t=v.div("currentColor",n);return{change:function(e){v.BG(t,e.cssa())}}},fields:function(e,t,n){var r=n.space,a=n.limit||255,i=0<=n.fix?n.fix:0,o=(""+a).length+i;o=i?o+1:o;var u=r.split(""),s="A"==r[r.length-1];if(r=s?r.slice(0,-1):r,["RGB","HSL","HSV","CMYK"].indexOf(r)<0)return console.warn("Invalid field names",r);var l=v.div("colorFields",e),f=u.map(function(e){e=e.toLowerCase();var n=v.labelInput("color "+e,e,l,o);return n.input.onblur=c,n.input.onkeydown=h,n.input.onkeyup=d,{name:e,e:n}});function c(){t.done()}function h(e){e.ctrlKey||e.altKey||!/^[a-zA-Z]$/.test(e.key)||e.preventDefault()}function d(){var n=[r];f.forEach(function(e){n.push(e.e.input.value/a)}),s||n.push(t.getAlpha()),t.set(n)}return{change:function(n){f.forEach(function(e){e.e.input.value=(n[e.name]()*a).toFixed(i)})}}},hex:function(e,r,n){var t=v.labelInput("hex",n.label||"",e,7);return t.input.value="#",t.input.onkeyup=function(e){var n=e.keyCode||e.which,t=e.target.value;t=function(e,n,t){for(var r=e,a=e.length;a (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * under the MIT license - */ - -'use strict'; - -module.exports = (store, __exports) => { - const electron = require('electron'), - allWindows = () => - electron.BrowserWindow.getAllWindows().filter( - (win) => win.getTitle() !== 'notion-enhancer menu' - ), - // createWindow = __exports.createWindow, - path = require('path'), - helpers = require('../../pkg/helpers.js'); - - __exports.createWindow = function (relativeUrl, focused_window) { - if (!relativeUrl) relativeUrl = ''; - const window_state = require(`${helpers - .getNotionResources() - .replace(/\\/g, '/')}/app/node_modules/electron-window-state/index.js`)( - { - defaultWidth: 1320, - defaultHeight: 860, - } - ), - rect = { - x: window_state.x, - y: window_state.y, - width: window_state.width, - height: window_state.height, - }; - focused_window = - focused_window || electron.BrowserWindow.getFocusedWindow(); - if (focused_window && !focused_window.isMaximized()) { - rect.x = focused_window.getPosition()[0] + 20; - rect.y = focused_window.getPosition()[1] + 20; - rect.width = focused_window.getSize()[0]; - rect.height = focused_window.getSize()[1]; - } - let window = new electron.BrowserWindow({ - show: false, - backgroundColor: '#ffffff', - titleBarStyle: 'hiddenInset', - frame: !store().frameless, - webPreferences: { - preload: path.resolve( - `${helpers.getNotionResources()}/app/renderer/index.js` - ), - webviewTag: true, - session: electron.session.fromPartition('persist:notion'), - enableRemoteModule: true, - }, - ...rect, - }); - window.once('ready-to-show', function () { - if ( - !store().openhidden || - allWindows().some((win) => win.isVisible() && win.id != window.id) - ) { - window.show(); - window.focus(); - if (store().maximized) window.maximize(); - if ( - (focused_window && focused_window.isFullScreen()) || - window_state.isFullScreen - ) - window.setFullScreen(true); - } - }); - let intended_quit = false; - window.on('close', (e) => { - if (intended_quit || !store().close_to_tray || allWindows().length > 1) { - window_state.saveState(window); - window = null; - } else { - e.preventDefault(); - window.hide(); - } - }); - electron.app.on('before-quit', () => (intended_quit = true)); - window.loadURL(__exports.getIndexUrl(relativeUrl)); - return window; - }; - return __exports.createWindow; -}; diff --git a/temp/core/css/buttons.css b/temp/core/css/buttons.css deleted file mode 100644 index 70b8465..0000000 --- a/temp/core/css/buttons.css +++ /dev/null @@ -1,43 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * under the MIT license - */ - -.window-buttons-area { - display: flex; - align-items: center; - font-size: 14px; -} -.window-button { - background: transparent; - border: 0; - margin: 0px 0px 0px 9px; - width: 32px; - line-height: 26px; - border-radius: 4px; - font-size: 16px; - transition: background 0.2s; - cursor: default; -} -.window-button svg { - margin-top: 8px; - width: 14px; - height: 14px; -} -.window-button svg path { - fill: currentColor; -} -.window-button svg line { - stroke: currentColor; -} - -.window-button:hover { - background: var(--theme--interactive_hover); - box-shadow: 0 0 0 0.5px var(--theme--interactive_hover-border); -} -.window-button.btn-close:hover { - background: var(--theme--button_close); - color: var(--theme--button_close-fill); -} diff --git a/temp/core/css/scrollbars.css b/temp/core/css/scrollbars.css deleted file mode 100644 index a837c92..0000000 --- a/temp/core/css/scrollbars.css +++ /dev/null @@ -1,29 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * under the MIT license - */ - -[data-tweaks*='[smooth_scrollbars]'] .notion-scroller { - cursor: auto; -} -[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar { - width: 8px; /* vertical */ - height: 8px; /* horizontal */ - -webkit-app-region: no-drag; -} -[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar-corner { - background-color: transparent; /* overlap */ -} -[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar-thumb { - border-radius: 5px; -} - -[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar-thumb { - background-color: var(--theme--scrollbar); - border: 1px solid var(--theme--scrollbar-border); -} -[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar-thumb:hover { - background: var(--theme--scrollbar_hover); -} diff --git a/temp/core/css/theme.css b/temp/core/css/theme.css deleted file mode 100644 index 8bbf38b..0000000 --- a/temp/core/css/theme.css +++ /dev/null @@ -1,1123 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * (c) 2020 Arecsu - * (c) 2020 u/zenith_illinois - * (c) 2020 admiraldus (https://github.com/admiraldus) - * under the MIT license - */ - -/** app **/ - -.notion-body, -.notion-body.dark [style*='background: rgb(47, 52, 55)'], -.notion-body.dark [style*='background-color: rgb(47, 52, 55)'], -.notion-body:not(.dark) - .notion-light-theme - [style*='background: white']:not(.notion-help-button), -.notion-body:not(.dark) - .notion-dark-theme - [style*='background: white']:not(.notion-help-button):not([style*='box-shadow: rgba(15, 15, 15, 0.05) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 3px 6px, rgba(15, 15, 15, 0.2) 0px 9px 24px;']), -.notion-body:not(.dark) [style*='background-color: white'] { - background: var(--theme--main) !important; -} -.notion-sidebar > div, -.notion-body.dark [style*='background: rgb(55, 60, 63)'], -.notion-body.dark [style*='background: rgb(120, 123, 123)'], -.notion-body:not(.dark) [style*='background: rgb(247, 246, 243)'], -.notion-body:not(.dark) [style*='background: rgb(223, 223, 222)'] { - background: var(--theme--sidebar) !important; -} -.notion-peek-renderer, -[style*='background: rgba(15, 15, 15, 0.6)'] { - background: var(--theme--overlay) !important; -} - -.notion-frame - .notion-scroller - [style*='env(safe-area-inset-'][style*=' width: 900px'], -.notion-frame - .notion-scroller - [style*='env(safe-area-inset-'][style*=';width: 900px'], -.notion-frame - .notion-scroller - [style*='height: 30vh'] - [style*='pointer-events:'][style*='max-width: 100%; width: 900px'] { - width: var(--theme--page_normal-width) !important; -} - -.notion-frame - [style*='padding-left: calc(96px + env(safe-area-inset-left)); padding-right: calc(96px + env(safe-area-inset-right));'] { - padding-left: var(--theme--page-padding) !important; - padding-right: var(--theme--page-padding) !important; -} - -.notion-page-content [data-block-id][style*='max-width'] { - max-width: 100% !important; -} -.notion-frame - .notion-scroller - [style*='env(safe-area-inset-'][style*=' width: 100%'], -.notion-frame - .notion-scroller - [style*='height: 30vh'] - [style*='pointer-events:'][style*='max-width: 100%; width: 100%'] { - width: var(--theme--page_full-width) !important; -} -.notion-frame .notion-scroller [style*='padding-left: 136.5px;'] { - padding-left: 0 !important; -} -.notion-frame .notion-scroller [style*='padding-right: 136.5px;'] { - padding-right: 0 !important; -} -.notion-collection_view-block > :first-child, -.notion-collection_view-block .notion-scroller > :first-child { - padding-left: 0 !important; - padding-right: 0 !important; -} - -.notion-peek-renderer - .notion-scroller.vertical - [style*='position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; height: 20vh;'], -.notion-peek-renderer - .notion-scroller.vertical - [style*='position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; height: 20vh;'] - img { - height: var(--theme--preview_banner-height) !important; -} -[style^='position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; height: 30vh;'], -[style^='position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; height: 30vh;'] - img { - height: var(--theme--page_banner-height) !important; -} - -/* colour help button - one of the few specific classes notion does give us */ -.notion-help-button { - background: var(--theme--interactive_hover) !important; - box-shadow: 0 0 0 0.5px var(--theme--interactive_hover-border) !important; -} - -/* page preview sizing */ -.notion-peek-renderer > div:nth-child(2) { - max-width: var(--theme--preview-width) !important; -} -.notion-peek-renderer .notion-page-content [style*='max-width: 943px;'] { - max-width: none !important; -} - -.notion-peek-renderer - .notion-scroller.vertical - [style*='padding-left: calc(126px + env(safe-area-inset-left));'] { - padding-left: var(--theme--preview-padding) !important; -} -.notion-peek-renderer - .notion-scroller.vertical - [style*='padding-right: calc(126px + env(safe-area-inset-right));'] { - padding-right: var(--theme--preview-padding) !important; -} -.notion-peek-renderer - .notion-scroller.vertical - [style*='margin-left: calc(126px + env(safe-area-inset-left));'] { - margin-left: var(--theme--preview-padding) !important; -} -.notion-peek-renderer - .notion-scroller.vertical - [style*='margin-right: calc(126px + env(safe-area-inset-right));'] { - margin-right: var(--theme--preview-padding) !important; -} -.notion-peek-renderer .notion-page-content { - padding-left: var(--theme--preview-padding) !important; - padding-right: var(--theme--preview-padding) !important; - width: 100%; -} - -/** fonts **/ - -[style*='Segoe UI'] { - font-family: var(--theme--font_sans) !important; -} -[style*='Georgia'] { - font-family: var(--theme--font_serif) !important; -} -[style*='iawriter-mono'] { - font-family: var(--theme--font_mono) !important; -} -[style*='SFMono-Regular'] { - font-family: var(--theme--font_code) !important; -} -.notion-selectable.notion-quote-block div[spellcheck="true"] { - font-family: var(--theme--font_quote) !important; -} -[placeholder='Heading 1'], [placeholder='Heading 2'], [placeholder='Heading 3'] { - font-family: var(--theme--font_headings) !important; -} -.notion-frame .notion-page-block div[placeholder='Untitled'], -.notion-overlay-container .notion-page-block div[placeholder='Untitled'] { - font-size: calc( - var(--theme--font_body-size) * (var(--theme--font_heading1-size) / 1em) - ) !important; -} -[placeholder='Heading 1'] { - font-size: calc( - var(--theme--font_body-size) * (var(--theme--font_heading1-size) / 1em) - ) !important; -} -[placeholder='Heading 2'] { - font-size: calc( - var(--theme--font_body-size) * (var(--theme--font_heading2-size) / 1em) - ) !important; -} -[placeholder='Heading 3'] { - font-size: calc( - var(--theme--font_body-size) * (var(--theme--font_heading3-size) / 1em) - ) !important; -} -.notion-frame .notion-scroller.vertical.horizontal [style*='font-size: 14px'], -.notion-overlay-container .notion-scroller.vertical [style*='font-size: 14px'] { - font-size: var(--theme--font_label-size) !important; -} -.notion-frame .notion-scroller.vertical.horizontal .notion-page-content, -.notion-overlay-container .notion-scroller.vertical .notion-page-content { - font-size: var(--theme--font_body-size) !important; -} -.notion-frame - .notion-scroller.vertical.horizontal - .notion-page-content[style*='font-size: 14px'], -.notion-overlay-container - .notion-scroller.vertical - .notion-page-content[style*='font-size: 14px'] { - font-size: var(--theme--font_body-size_small) !important; -} -.notion-code-block [placeholder=' '] { - font-size: var(--theme--font_code-size) !important; -} -.notion-sidebar [style*='font-size: 14px'] { - font-size: var(--theme--font_sidebar-size) !important; -} - -/** text-block readability **/ - -.notion-page-content .notion-selectable.notion-text-block { - line-height: var(--theme--text-block_line-height) !important; - margin-top: var(--theme--text-block_margin-top) !important; -} - -/** databases **/ - -.notion-body.dark [style*='background: rgb(63, 68, 71)'], -.notion-body.dark [style*='background-color: rgb(64, 68, 71);'], -.notion-body:not(.dark) - .notion-scroller.horizontal.vertical - .notion-selectable - > a[style*='background: white'], -.notion-body:not(.dark) [style*='background: rgb(247, 246, 243)'], -.notion-body:not(.dark) - .notion-dark-theme - [style*='background: white'][style*='box-shadow: rgba(15, 15, 15, 0.05) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 3px 6px, rgba(15, 15, 15, 0.2) 0px 9px 24px;'] { - background: var(--theme--card) !important; -} -.notion-body.dark - .notion-page-block.notion-collection-item - [style*='background: rgba(255, 255, 255, 0.05)'], -.notion-body:not(.dark) - .notion-page-block.notion-collection-item - [style*='background: rgba(55, 53, 47, 0.024)'] { - background: var(--theme--gallery) !important; -} -.notion-body.dark .notion-scroller > [style*='rgb(55, 60, 63)'], -.notion-body:not(.dark) [style*='background: rgba(242, 241, 238, 0.6)'] { - background: var(--theme--select_input) !important; -} - -.notion-body.dark - [style*='box-shadow: rgba(255, 255, 255, 0.14) 0px -1px inset;'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.16) 0px -1px 0px inset'] { - box-shadow: rgba(55, 53, 47, 0.16) 0px -1px inset !important; -} - -.notion-body.dark [style*='box-shadow: rgba(255, 255, 255, 0.07) 0px 1px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.09) 0px 1px 0px'] { - box-shadow: var(--theme--ui-border) 0px 1px 0px !important; -} -.notion-body.dark - [style*='box-shadow: rgba(255, 255, 255, 0.14) 0px 1px 0px inset'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.16) 0px 1px 0px inset'] { - box-shadow: var(--theme--table-border) 0px 1px 0px inset !important; -} - -.notion-body.dark [style*='box-shadow: rgb(47, 52, 55) -3px 0px 0px;'], -.notion-body:not(.dark) [style*='box-shadow: white -3px 0px 0px;'] { - box-shadow: var(--theme--main) -3px 0px 0px !important; -} -.notion-body.dark - [style*='box-shadow: rgb(47, 52, 55) -3px 0px 0px, rgba(255, 255, 255, 0.14) 0px 1px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: white -3px 0px 0px, rgba(55, 53, 47, 0.16) 0px 1px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(255, 255, 255, 0.07) 0px -1px 0px'] { - box-shadow: var(--theme--main) -3px 0px 0px, - var(--theme--ui-border) 0px 1px 0px !important; -} - -.notion-body.dark [style*='border-top: 1px solid rgba(255, 255, 255,'], -.notion-body:not(.dark) [style*='border-top: 1px solid rgba(55, 53, 47,'] { - border-top: 1px solid var(--theme--table-border) !important; -} -.notion-body.dark - [style*='box-shadow: rgba(255, 255, 255, 0.14) -1px 0px 0px'] { - box-shadow: var(--theme--table-border) -1px 0px 0px !important; -} -.notion-body.dark [style*='border-bottom: 1px solid rgba(255, 255, 255,'], -.notion-body:not(.dark) [style*='border-bottom: 1px solid rgba(55, 53, 47,'] { - border-bottom: 1px solid var(--theme--table-border) !important; -} -.notion-body.dark [style*='box-shadow: rgba(255, 255, 255, 0.14) 0px 1px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.16) 0px 1px 0px'] { - box-shadow: var(--theme--table-border) 0px 1px 0px !important; -} -.notion-body.dark [style*='border-right: 1px solid rgba(255, 255, 255,'], -.notion-body:not(.dark) [style*='border-right: 1px solid rgba(55, 53, 47,'] { - border-right: 1px solid var(--theme--table-border) !important; -} -.notion-body.dark [style*='box-shadow: rgba(255, 255, 255, 0.07) 0px -1px 0px'], -.notion-body.dark [style*='box-shadow: rgba(55, 53, 47, 0.09) 0px -1px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.09) 0px -1px 0px'] { - box-shadow: var(--theme--ui-border) 0px -1px 0px !important; -} -.notion-body.dark [style*='border-left: 1px solid rgba(255, 255, 255,'], -.notion-body.dark - .notion-block-permission-settings-public-access - [role='button'][style*='border-left: none'], -.notion-body:not(.dark) [style*='border-left: 1px solid rgba(55, 53, 47,'] { - border-left: 1px solid var(--theme--table-border) !important; -} -.notion-body.dark - [style*='box-shadow: rgba(255, 255, 255, 0.14) 1px 0px 0px inset'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.16) 1px 0px 0px inset'] { - box-shadow: var(--theme--table-border) 1px 0px 0px inset !important; -} -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.09) -1px 0px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(55, 53, 47, 0.16) -1px 0px 0px'] { - box-shadow: -1px -1px 0 var(--theme--table-border) !important; -} - -.notion-body.dark - [style*='border-top: 1px solid rgb(77, 81, 83)'], -.notion-body:not(.dark) - [style*='border-top: 1px solid rgb(223, 223, 222)'] { - border-top: 1px solid var(--theme--table-border_row) !important; -} -.notion-body.dark - [style*='border-bottom: 1px solid rgb(77, 81, 83)'], -.notion-body:not(.dark) - [style*='border-bottom: 1px solid rgb(223, 223, 222)'] { - border-bottom: 1px solid var(--theme--table-border_row) !important; -} -.notion-body.dark - [style*='border-right: 1px solid rgb(77, 81, 83)'], -.notion-body:not(.dark) - [style*='border-right: 1px solid rgb(223, 223, 222)'] { - border-right: 1px solid var(--theme--table-border_row) !important; -} - -.notion-body.dark - [style*='border-right: 1px solid rgb(63, 66, 69)'], -.notion-body:not(.dark) - [style*='border-right: 1px solid rgb(237, 237, 236)'] { - border-right: 1px solid var(--theme--table-border_column) !important; -} - -.notion-body.dark - [style*='box-shadow: rgb(47, 52, 55) -3px 0px 0px, rgb(77, 81, 83) 0px 1px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: white -3px 0px 0px, rgb(223, 223, 222) 0px 1px 0px'] { - box-shadow: var(--theme--main) -3px 0px 0px, - var(--theme--table-border_row) 0px 1px 0px !important; -} -.notion-body.dark - [style*='box-shadow: rgb(77, 81, 83) -1px 0px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: rgb(223, 223, 222) -1px 0px 0px'] { - box-shadow: var(--theme--table-border_row) -1px 0px 0px !important; -} -.notion-body.dark - [style*='box-shadow: rgb(77, 81, 83) 0px 1px 0px'], -.notion-body:not(.dark) - [style*='box-shadow: rgb(223, 223, 222) 0px 1px 0px'] { - box-shadow: var(--theme--table-border_row) 0 1px 0px !important; -} -.notion-body.dark - [style*='box-shadow: rgb(77, 81, 83) 0px 1px 0px inset'], -.notion-body:not(.dark) - [style*='box-shadow: rgb(223, 223, 222) 0px 1px 0px inset'] { - box-shadow: var(--theme--table-border_row) 0 1px 0px inset !important; -} - -[style*='border: 1px solid rgba(46, 170, 220, 0.6)'] { - border: 1px solid var(--theme--table-border_selected) !important; -} - -.notion-body.dark - [style*='background-image: linear-gradient(to right, rgba(255, 255, 255, 0.14) 0%, rgba(255, 255, 255, 0.14) 100%);'], -.notion-body:not(.dark) - [style*='background-image: linear-gradient(to right, rgba(55, 53, 47, 0.16) 0%, rgba(55, 53, 47, 0.16) 100%);'] { - background-image: linear-gradient( - to right, - var(--theme--bg_gray) 0%, - var(--theme--bg_gray) 100% - ) !important; -} - -.notion-body.dark [style*='background: rgb(71, 76, 80)'], -.notion-body.dark [style*='background: rgb(80, 85, 88)'], -.notion-body.dark [style*='background: rgb(98, 102, 104)'], -.notion-body.dark [style*='height: 1px; background: rgba(255, 255, 255, 0.07)'], -.notion-body:not(.dark) [style*='background: rgba(55, 53, 47,'], -.notion-body:not(.dark) [style*='background: rgb(239, 239, 238)'], -.notion-body:not(.dark) [style*='background: rgba(206, 205, 202, 0.5)'] { - background: var(--theme--interactive_hover) !important; - box-shadow: 0 0 0 0.5px var(--theme--interactive_hover-border) !important; -} - -/* normalise inline-table size */ -.notion-page-content .notion-collection_view-block[style*=' width'], -.notion-page-content .notion-collection_view-block[style^='width'] { - width: 100% !important; -} -.notion-page-content - .notion-collection_view-block - [style*='padding-left: 50px'], -.notion-page-content - .notion-collection_view-block - [style*='padding-left: 96px'], -.notion-page-content - .notion-collection_view-block - [style*='padding-left: 126px'] { - padding-left: 0 !important; -} -.notion-page-content - .notion-collection_view-block - [style*='padding-right: 50px'], -.notion-page-content - .notion-collection_view-block - [style*='padding-right: 96px'], -.notion-page-content - .notion-collection_view-block - [style*='padding-right: 126px'] { - padding-right: 0 !important; -} -.notion-page-content - .notion-collection_view-block - [style*='min-width: calc(100% - 192px);'], -.notion-page-content - .notion-collection_view-block - [style*='min-width: 708px;'] { - min-width: 100% !important; -} -.notion-page-content .notion-collection_view-block > div { - padding: 0 1px; -} - -/* smooth transitions */ -.notion-calendar-view-day, -.DayPicker-Day--today:not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end), -.DayPicker-Day.DayPicker-Day--start.DayPicker-Day--selected, -.DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day--outside:hover, -.DayPicker:not(.DayPicker--interactionDisabled) - .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end) { - transition: all 200ms ease !important; -} -.notion-token-remove-button { - transition: opacity 200ms ease !important; -} -.notion-to_do-block > div > div > div[style*='background:'] { - transition: background 200ms ease !important; -} - -/* fix button resizing */ -.notion-collection_view-block [role='button'], -.notion-collection_view_page-block [role='button'] { - border-width: 0 !important; -} - -/** general ui **/ - -::selection, -[style*='background: rgba(46, 170, 220,']:not([style*='background: rgba(46, 170, 220, 0)']), -[style*='background-color: rgba(46, 170, 220,']:not([style*='background-color: rgba(46, 170, 220, 0)']) { - background: var(--theme--selected) !important; -} - -[style*=' color: rgb(46, 170, 220)'], -[style^='color: rgb(46, 170, 220)'] { - color: var(--theme--primary) !important; -} -[style*='fill: rgb(46, 170, 220)'] { - fill: var(--theme--primary) !important; -} -[style*='background: rgb(46, 170, 220)'], -[style*='background-color: rgb(46, 170, 220)'] { - background: var(--theme--primary) !important; -} -[style*='box-shadow: rgb(46, 170, 220) 0px 0px 0px 2px inset'] { - box-shadow: var(--theme--primary) 0px 0px 0px 2px inset !important; -} -[style*='background: rgb(6, 156, 205)'] { - background: var(--theme--primary_hover) !important; -} -[style*='background: rgb(0, 141, 190)'] { - background: var(--theme--primary_click) !important; -} -[style*='background: rgb(46, 170, 220)'][style*='color: white'], -[style*='background-color: rgb(46, 170, 220)'][style*='color: white'], -[style*='background: rgb(6, 156, 205)'][style*='color: white'], -[style*='background: rgb(0, 141, 190)'][style*='color: white'] { - color: var(--theme--primary_text) !important; -} -[style*='background: rgb(46, 170, 220)'] [style*='fill: white'], -[style*='background-color: rgb(46, 170, 220)'] [style*='fill: white'], -[style*='background: rgb(6, 156, 205)'] [style*='fill: white'], -[style*='background: rgb(0, 141, 190)'] [style*='fill: white'] { - fill: var(--theme--primary_text) !important; -} -.DayPicker-Day--today:not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end)::after, -[style*='background: rgb(235, 87, 87)'] { - background: var(--theme--primary_indicator) !important; -} -[style*='background: rgb(235, 87, 87)'][style*='color: white'] { - color: var(--theme--primary_indicator_text) !important; -} -#notion-app .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day--outside:hover, #notion-app .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--value):not(.DayPicker-Day--start):not(.DayPicker-Day--end):hover { - background: var(--theme--primary_indicator_hover) !important; -} - -.notion-body.dark - [style*='box-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px, rgba(15, 15, 15, 0.2) 0px 3px 6px, rgba(15, 15, 15, 0.4) 0px 9px 24px'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(15, 15, 15, 0.05) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 3px 6px, rgba(15, 15, 15, 0.2) 0px 9px 24px'] { - box-shadow: var(--theme--box-shadow_strong) !important; -} -.notion-body.dark - [style*='box-shadow: rgba(15, 15, 15, 0.2) 0px 0px 0px 1px, rgba(15, 15, 15, 0.2) 0px 2px 4px'], -.notion-body:not(.dark) - [style*='box-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 2px 4px'] { - box-shadow: var(--theme--box-shadow) !important; -} - -.notion-to_do-block > div [role='button']:hover, -.notion-to_do-block > div [role='button']:hover .checkboxSquare, -.notion-to_do-block > div [role='button']:hover .check { - background: var(--theme--option_hover-background) !important; -} -.notion-to_do-block > div [role='button']:hover .checkboxSquare path, -.notion-to_do-block > div [role='button']:hover .check polygon { - fill: var(--theme--option_hover-color) !important; -} -.notion-to_do-block > div [role='button']:not(:hover) .check { - background: var(--theme--option_active-background) !important; -} -.notion-to_do-block > div [role='button']:not(:hover) .check polygon { - fill: var(--theme--option_active-color) !important; -} - -.notion-to_do-block .checkboxSquare { - background: var(--theme--option-background) !important; -} -.notion-to_do-block .checkboxSquare path { - fill: var(--theme--option-color) !important; -} - -[style*='color: rgb(235, 87, 87); border: 1px solid rgba(235, 87, 87, 0.5);'] { - color: var(--theme--danger_text) !important; - border: 1px solid var(--theme--danger_border) !important; -} - -/* divider */ - -.notion-body.dark .notion-divider-block [style*='border-bottom: 1px solid rgba(255, 255, 255,'], -.notion-body:not(.dark) .notion-divider-block [style*='border-bottom: 1px solid rgba(55, 53, 47,'] { - border-bottom: 1px solid var(--theme--divider) !important; -} - -/* inputs */ -.notion-focusable:focus-within { - box-shadow: var(--theme--primary_hover) 0px 0px 0px 2px !important; -} - -/** content colours **/ - -.notion-body, -.notion-frame .notion-page-block, -.notion-body.dark [style*=' color: rgba(255, 255, 255, 0.9)'], -.notion-body.dark [style^='color: rgba(255, 255, 255, 0.9)'], -.notion-body.dark [style*=' color: rgba(255, 255, 255, 0.7)'], -.notion-body.dark [style^='color: rgba(255, 255, 255, 0.7)'], -.notion-body:not(.dark) [style*=' color: rgb(55, 53, 47);'], -.notion-body:not(.dark) [style^='color: rgb(55, 53, 47);'] { - color: var(--theme--text) !important; -} -.notion-body.dark [style*='color: rgba(255, 255, 255, 0.6)'], -.notion-body:not(.dark) [style*='color: rgba(55, 53, 47, 0.6)'], -.notion-body:not(.dark) [style*='color: rgba(25, 23, 17, 0.6)'] { - color: var(--theme--text_ui) !important; -} -::placeholder { - opacity: 1 !important; -} -::placeholder, -[style*='-webkit-text-fill-color:'], -.notion-body.dark [style*='color: rgba(255, 255, 255, 0.4)'], -.notion-body.dark [style*='color: rgba(255, 255, 255, 0.4)']::before, -.notion-body:not(.dark) [style*='color: rgba(55, 53, 47, 0.4)'], -.notion-body:not(.dark) [style*='color: rgba(55, 53, 47, 0.4)']::before { - color: var(--theme--text_ui_info) !important; - -webkit-text-fill-color: var(--theme--text_ui_info) !important; -} -.notion-body.dark [style*='fill: rgb(202, 204, 206)'] { - fill: var(--theme--text) !important; -} - -.notion-body.dark [style*='fill: rgba(255, 255, 255, 0.6)'], -.notion-body:not(.dark) [style*='fill: rgba(55, 53, 47, 0.8)'], -.notion-body:not(.dark) [style*='fill: rgba(55, 53, 47, 0.6)'], -.notion-body:not(.dark) [style*='fill: rgba(25, 23, 17, 0.6)'] { - fill: var(--theme--text_ui) !important; -} -.notion-body.dark [style*='fill: rgba(202, 204, 206, 0.6)'], -.notion-body.dark [style*='fill: rgba(202, 204, 206, 0.4)'], -.notion-body:not(.dark) [style*='fill: rgba(55, 53, 47, 0.4)'], -.notion-body:not(.dark) [style*='fill: rgba(55, 53, 47, 0.3)'] { - fill: var(--theme--text_ui_info) !important; -} -.notion-body.dark [style*='border-color:rgba(255,255,255,0.4);opacity:0.7'], -.notion-body:not(.dark) [style*='border-color:rgba(55,53,47,0.4);opacity:0.7'] { - border-color: var(--theme--text_ui_info) !important; -} -.notion-body.dark [style*='caret-color: rgba(255, 255, 255, 0.9)'], -.notion-body:not(.dark) [style*='caret-color: rgb(55, 53, 47)'] { - caret-color: var(--theme--text) !important; -} - -.notion-body.dark [style*='color:rgba(151,154,155,0.95)'], -.notion-body.dark - [style*='color: rgba(255, 255, 255, 0.6); fill: rgba(255, 255, 255, 0.6);'], -.notion-body:not(.dark) [style*='color:rgb(155,154,151)'], -.notion-body:not(.dark) - [style*='color: rgba(55, 53, 47, 0.6); fill: rgba(55, 53, 47, 0.6);'] { - color: var(--theme--text_gray) !important; - fill: var(--theme--text_gray) !important; -} -.notion-body.dark [style*='background:rgb(69,75,78)'], -.notion-body:not(.dark) [style*='background:rgb(235,236,237)'] { - background: var(--theme--bg_gray) !important; - color: var(--theme--bg_gray-text) !important; -} -.notion-body.dark - [style*='color:rgba(151,154,155,0.95)'] - [style*='background:rgb(69,75,78)'], -.notion-body.dark - [style*='color: rgba(255, 255, 255, 0.6); fill: rgba(255, 255, 255, 0.6);'] - [style*='background:rgb(69,75,78)'], -.notion-body:not(.dark) - [style*='color:rgb(155,154,151)'] - [style*='background:rgb(235,236,237)'], -.notion-body:not(.dark) - [style*='color: rgba(55, 53, 47, 0.6); fill: rgba(55, 53, 47, 0.6);'] - [style*='background:rgb(235,236,237)'] { - background: var(--theme--bg_gray) !important; - color: var(--theme--text_gray) !important; - fill: var(--theme--text_gray) !important; -} -.notion-body.dark [style*='background: rgb(69, 75, 78)'], -.notion-body:not(.dark) [style*='background: rgb(235, 236, 237)'] { - background: var(--theme--line_gray) !important; - color: var(--theme--line_gray-text) !important; -} -.notion-body.dark [style*='background: rgba(151, 154, 155, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(140, 46, 0, 0.2)'] { - background: var(--theme--select_gray) !important; - color: var(--theme--select_gray-text) !important; -} -.notion-body.dark [style*='background: rgba(69, 75, 78, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(235, 236, 237, 0.3)'] { - background: var(--theme--callout_gray) !important; - color: var(--theme--callout_gray-text) !important; -} - -.notion-body.dark [style*='color:rgb(147,114,100)'], -.notion-body.dark - [style*='color: rgb(147, 114, 100); fill: rgb(147, 114, 100);'], -.notion-body:not(.dark) [style*='color:rgb(100,71,58)'], -.notion-body:not(.dark) - [style*='color: rgb(100, 71, 58); fill: rgb(100, 71, 58);'] { - color: var(--theme--text_brown) !important; - fill: var(--theme--text_brown) !important; -} -.notion-body.dark [style*='background:rgb(67,64,64)'], -.notion-body:not(.dark) [style*='background:rgb(233,229,227)'] { - background: var(--theme--bg_brown) !important; - color: var(--theme--bg_brown-text) !important; -} -.notion-body.dark - [style*='color:rgb(147,114,100)'] - [style*='background:rgb(67,64,64)'], -.notion-body.dark - [style*='color: rgb(147, 114, 100); fill: rgb(147, 114, 100);'] - [style*='background:rgb(67,64,64)'], -.notion-body:not(.dark) - [style*='color:rgb(100,71,58)'] - [style*='background:rgb(233,229,227)'], -.notion-body:not(.dark) - [style*='color: rgb(100, 71, 58); fill: rgb(100, 71, 58);'] - [style*='background:rgb(233,229,227)'] { - background: var(--theme--bg_brown) !important; - color: var(--theme--text_brown) !important; - fill: var(--theme--text_brown) !important; -} -.notion-body.dark [style*='background: rgb(67, 64, 64)'], -.notion-body:not(.dark) [style*='background: rgb(233, 229, 227)'] { - background: var(--theme--line_brown) !important; - color: var(--theme--line_brown-text) !important; -} -.notion-body.dark [style*='background: rgba(147, 114, 100, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(140, 46, 0, 0.2)'] { - background: var(--theme--select_brown) !important; - color: var(--theme--select_brown-text) !important; -} -.notion-body.dark [style*='background: rgba(67, 64, 64, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(233, 229, 227, 0.3)'] { - background: var(--theme--callout_brown) !important; - color: var(--theme--callout_brown-text) !important; -} - -.notion-body.dark [style*='color:rgb(255,163,68)'], -.notion-body.dark [style*='color: rgb(255, 163, 68); fill: rgb(255, 163, 68);'], -.notion-body:not(.dark) [style*='color:rgb(217,115,13)'], -.notion-body:not(.dark) - [style*='color: rgb(217, 115, 13); fill: rgb(217, 115, 13);'] { - color: var(--theme--text_orange) !important; - fill: var(--theme--text_orange) !important; -} -.notion-body.dark [style*='background:rgb(89,74,58)'], -.notion-body:not(.dark) [style*='background:rgb(250,235,221)'] { - background: var(--theme--bg_orange) !important; - color: var(--theme--bg_orange-text) !important; -} -.notion-body.dark - [style*='color:rgb(255,163,68)'] - [style*='background:rgb(89,74,58)'], -.notion-body.dark - [style*='color: rgb(255, 163, 68); fill: rgb(255, 163, 68);'] - [style*='background:rgb(89,74,58)'], -.notion-body:not(.dark) - [style*='color:rgb(217,115,13)'] - [style*='background:rgb(250,235,221)'], -.notion-body:not(.dark) - [style*='color: rgb(217, 115, 13); fill: rgb(217, 115, 13);'] - [style*='background:rgb(250,235,221)'] { - background: var(--theme--bg_orange) !important; - color: var(--theme--text_orange) !important; - fill: var(--theme--text_orange) !important; -} -.notion-body.dark [style*='background: rgb(89, 74, 58)'], -.notion-body:not(.dark) [style*='background: rgb(250, 235, 221)'] { - background: var(--theme--line_orange) !important; - color: var(--theme--line_orange-text) !important; -} -.notion-body.dark [style*='background: rgba(255, 163, 68, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(245, 93, 0, 0.2)'] { - background: var(--theme--select_orange) !important; - color: var(--theme--select_orange-text) !important; -} -.notion-body.dark [style*='background: rgba(89, 74, 58, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(250, 235, 221, 0.3)'] { - background: var(--theme--callout_orange) !important; - color: var(--theme--callout_orange-text) !important; -} - -.notion-body.dark [style*='color:rgb(255,220,73)'], -.notion-body.dark [style*='color: rgb(255, 220, 73); fill: rgb(255, 220, 73);'], -.notion-body:not(.dark) [style*='color:rgb(223,171,1)'], -.notion-body:not(.dark) - [style*='color: rgb(223, 171, 1); fill: rgb(223, 171, 1);'] { - color: var(--theme--text_yellow) !important; - fill: var(--theme--text_yellow) !important; -} -.notion-body.dark [style*='background:rgb(89,86,59)'], -.notion-body:not(.dark) [style*='background:rgb(251,243,219)'] { - background: var(--theme--bg_yellow) !important; - color: var(--theme--bg_yellow-text) !important; -} -.notion-body.dark - [style*='color:rgb(255,220,73)'] - [style*='background:rgb(89,86,59)'], -.notion-body.dark - [style*='color: rgb(255, 220, 73); fill: rgb(255, 220, 73);'] - [style*='background:rgb(89,86,59)'], -.notion-body:not(.dark) - [style*='color:rgb(223,171,1)'] - [style*='background:rgb(251,243,219)'], -.notion-body:not(.dark) - [style*='color: rgb(223, 171, 1); fill: rgb(223, 171, 1);'] - [style*='background:rgb(251,243,219)'] { - background: var(--theme--bg_yellow) !important; - color: var(--theme--text_yellow) !important; - fill: var(--theme--text_yellow) !important; -} -.notion-body.dark [style*='background: rgb(89, 86, 59)'], -.notion-body:not(.dark) [style*='background: rgb(251, 243, 219)'] { - background: var(--theme--line_yellow) !important; - color: var(--theme--line_yellow-text) !important; -} -.notion-body.dark [style*='background: rgba(255, 220, 73, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(233, 168, 0, 0.2)'] { - background: var(--theme--select_yellow) !important; - color: var(--theme--select_yellow-text) !important; -} -.notion-body.dark [style*='background: rgba(89, 86, 59, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(251, 243, 219, 0.3)'] { - background: var(--theme--callout_yellow) !important; - color: var(--theme--callout_yellow-text) !important; -} - -.notion-body.dark [style*='color:rgb(77,171,154)'], -.notion-body.dark [style*='color: rgb(77, 171, 154); fill: rgb(77, 171, 154);'], -.notion-body:not(.dark) [style*='color:rgb(15,123,108)'], -.notion-body:not(.dark) - [style*='color: rgb(15, 123, 108); fill: rgb(15, 123, 108);'] { - color: var(--theme--text_green) !important; - fill: var(--theme--text_green) !important; -} -.notion-body.dark [style*='background:rgb(53,76,75)'], -.notion-body:not(.dark) [style*='background:rgb(221,237,234)'] { - background: var(--theme--bg_green) !important; - color: var(--theme--bg_green-text) !important; -} -.notion-body.dark - [style*='color:rgb(77,171,154)'] - [style*='background:rgb(53,76,75)'], -.notion-body.dark - [style*='color: rgb(77, 171, 154); fill: rgb(77, 171, 154);'] - [style*='background:rgb(53,76,75)'], -.notion-body:not(.dark) - [style*='color:rgb(15,123,108)'] - [style*='background:rgb(221,237,234)'], -.notion-body:not(.dark) - [style*='color: rgb(15, 123, 108); fill: rgb(15, 123, 108);'] - [style*='background:rgb(221,237,234)'] { - background: var(--theme--bg_green) !important; - color: var(--theme--text_green) !important; - fill: var(--theme--text_green) !important; -} -.notion-body.dark [style*='background: rgb(53, 76, 75)'], -.notion-body:not(.dark) [style*='background: rgb(221, 237, 234)'] { - background: var(--theme--line_green) !important; - color: var(--theme--line_green-text) !important; -} -.notion-body.dark [style*='background: rgba(77, 171, 154, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(0, 135, 107, 0.2)'] { - background: var(--theme--select_green) !important; - color: var(--theme--select_green-text) !important; -} -.notion-body.dark [style*='background: rgba(53, 76, 75, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(221, 237, 234, 0.3)'] { - background: var(--theme--callout_green) !important; - color: var(--theme--callout_green-text) !important; -} - -.notion-body.dark [style*='color:rgb(82,156,202)'], -.notion-body.dark [style*='color: rgb(82, 156, 202); fill: rgb(82, 156, 202);'], -.notion-body:not(.dark) [style*='color:rgb(11,110,153)'], -.notion-body:not(.dark) - [style*='color: rgb(11, 110, 153); fill: rgb(11, 110, 153);'] { - color: var(--theme--text_blue) !important; - fill: var(--theme--text_blue) !important; -} -.notion-body.dark [style*='background:rgb(54,73,84)'], -.notion-body:not(.dark) [style*='background:rgb(221,235,241)'] { - background: var(--theme--bg_blue) !important; - color: var(--theme--bg_blue-text) !important; -} -.notion-body.dark - [style*='color:rgb(82,156,202)'] - [style*='background:rgb(54,73,84)'], -.notion-body.dark - [style*='color: rgb(82, 156, 202); fill: rgb(82, 156, 202);'] - [style*='background:rgb(54,73,84)'], -.notion-body:not(.dark) - [style*='color:rgb(11,110,153)'] - [style*='background:rgb(221,235,241)'], -.notion-body:not(.dark) - [style*='color: rgb(11, 110, 153); fill: rgb(11, 110, 153);'] - [style*='background:rgb(221,235,241)'] { - background: var(--theme--bg_blue) !important; - color: var(--theme--text_blue) !important; - fill: var(--theme--text_blue) !important; -} -.notion-body.dark [style*='background: rgb(54, 73, 84)'], -.notion-body:not(.dark) [style*='background: rgb(221, 235, 241)'] { - background: var(--theme--line_blue) !important; - color: var(--theme--line_blue-text) !important; -} -.notion-body.dark [style*='background: rgba(82, 156, 202, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(0, 120, 223, 0.2)'] { - background: var(--theme--select_blue) !important; - color: var(--theme--select_blue-text) !important; -} -.notion-body.dark [style*='background: rgba(54, 73, 84, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(221, 235, 241, 0.3)'] { - background: var(--theme--callout_blue) !important; - color: var(--theme--callout_blue-text) !important; -} - -.notion-body.dark [style*='color:rgb(154,109,215)'], -.notion-body.dark - [style*='color: rgb(154, 109, 215); fill: rgb(154, 109, 215);'], -.notion-body:not(.dark) [style*='color:rgb(105,64,165)'], -.notion-body:not(.dark) - [style*='color: rgb(105, 64, 165); fill: rgb(105, 64, 165);'] { - color: var(--theme--text_purple) !important; - fill: var(--theme--text_purple) !important; -} -.notion-body.dark [style*='background:rgb(68,63,87)'], -.notion-body:not(.dark) [style*='background:rgb(234,228,242)'] { - background: var(--theme--bg_purple) !important; - color: var(--theme--bg_purple-text) !important; -} -.notion-body.dark - [style*='color:rgb(154,109,215)'] - [style*='background:rgb(68,63,87)'], -.notion-body.dark - [style*='color: rgb(154, 109, 215); fill: rgb(154, 109, 215);'] - [style*='background:rgb(68,63,87)'], -.notion-body:not(.dark) - [style*='color:rgb(105,64,165)'] - [style*='background:rgb(234,228,242)'], -.notion-body:not(.dark) - [style*='color: rgb(105, 64, 165); fill: rgb(105, 64, 165);'] - [style*='background:rgb(234,228,242)'] { - background: var(--theme--bg_purple) !important; - color: var(--theme--text_purple) !important; - fill: var(--theme--text_purple) !important; -} -.notion-body.dark [style*='background: rgb(68, 63, 87)'], -.notion-body:not(.dark) [style*='background: rgb(234, 228, 242)'] { - background: var(--theme--line_purple) !important; - color: var(--theme--line_purple-text) !important; -} -.notion-body.dark [style*='background: rgba(154, 109, 215, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(103, 36, 222, 0.2)'] { - background: var(--theme--select_purple) !important; - color: var(--theme--select_purple-text) !important; -} -.notion-body.dark [style*='background: rgba(68, 63, 87, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(234, 228, 242, 0.3)'] { - background: var(--theme--callout_purple) !important; - color: var(--theme--callout_purple-text) !important; -} - -.notion-body.dark [style*='color:rgb(226,85,161)'], -.notion-body.dark [style*='color: rgb(226, 85, 161); fill: rgb(226, 85, 161);'], -.notion-body:not(.dark) [style*='color:rgb(173,26,114)'], -.notion-body:not(.dark) - [style*='color: rgb(173, 26, 114); fill: rgb(173, 26, 114);'] { - color: var(--theme--text_pink) !important; - fill: var(--theme--text_pink) !important; -} -.notion-body.dark [style*='background:rgb(83,59,76)'], -.notion-body:not(.dark) [style*='background:rgb(244,223,235)'] { - background: var(--theme--bg_pink) !important; - color: var(--theme--bg_pink-text) !important; -} -.notion-body.dark - [style*='color:rgb(226,85,161)'] - [style*='background:rgb(83,59,76)'], -.notion-body.dark - [style*='color: rgb(226, 85, 161); fill: rgb(226, 85, 161);'] - [style*='background:rgb(83,59,76)'], -.notion-body:not(.dark) - [style*='color:rgb(173,26,114)'] - [style*='background:rgb(244,223,235)'], -.notion-body:not(.dark) - [style*='color: rgb(173, 26, 114); fill: rgb(173, 26, 114);'] - [style*='background:rgb(244,223,235)'] { - background: var(--theme--bg_pink) !important; - color: var(--theme--text_pink) !important; - fill: var(--theme--text_pink) !important; -} -.notion-body.dark [style*='background: rgb(83, 59, 76)'], -.notion-body:not(.dark) [style*='background: rgb(244, 223, 235)'] { - background: var(--theme--line_pink) !important; - color: var(--theme--line_pink-text) !important; -} -.notion-body.dark [style*='background: rgba(226, 85, 161, 0.5)'], -.notion-body:not(.dark) [style*='background: rgba(221, 0, 129, 0.2)'] { - background: var(--theme--select_pink) !important; - color: var(--theme--select_pink-text) !important; -} -.notion-body.dark [style*='background: rgba(83, 59, 76, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(244, 223, 235, 0.3)'] { - background: var(--theme--callout_pink) !important; - color: var(--theme--callout_pink-text) !important; -} - -.notion-body.dark [style*='color:rgb(255,115,105)'], -.notion-body.dark - [style*='color: rgb(255, 115, 105); fill: rgb(255, 115, 105);'], -.notion-body:not(.dark) [style*='color:rgb(224,62,62)'], -.notion-body:not(.dark) - [style*='color: rgb(224, 62, 62); fill: rgb(224, 62, 62);'] { - color: var(--theme--text_red) !important; - fill: var(--theme--text_red) !important; -} -.notion-body.dark [style*='background:rgb(89,65,65)'], -.notion-body:not(.dark) [style*='background:rgb(251,228,228)'] { - background: var(--theme--bg_red) !important; - color: var(--theme--bg_red-text) !important; -} -.notion-body.dark - [style*='color:rgb(255,115,105)'] - [style*='background:rgb(89,65,65)'], -.notion-body.dark - [style*='color: rgb(255, 115, 105); fill: rgb(255, 115, 105);'] - [style*='background:rgb(89,65,65)'], -.notion-body:not(.dark) - [style*='color:rgb(224,62,62)'] - [style*='background:rgb(251,228,228)'], -.notion-body:not(.dark) - [style*='color: rgb(224, 62, 62); fill: rgb(224, 62, 62);'] - [style*='background:rgb(251,228,228)'] { - background: var(--theme--bg_red) !important; - color: var(--theme--text_red) !important; - fill: var(--theme--text_red) !important; -} -.notion-body.dark [style*='background: rgb(89, 65, 65)'], -.notion-body:not(.dark) [style*='background: rgb(251, 228, 228)'] { - background: var(--theme--line_red) !important; - color: var(--theme--line_red-text) !important; -} -.notion-body.dark [style*='background: rgba(255, 115, 105, 0.5);'], -.notion-body:not(.dark) [style*='background: rgba(255, 0, 26, 0.2)'] { - background: var(--theme--select_red) !important; - color: var(--theme--select_red-text) !important; -} -.notion-body.dark [style*='background: rgba(89, 65, 65, 0.3)'], -.notion-body:not(.dark) [style*='background: rgba(251, 228, 228, 0.3)'] { - background: var(--theme--callout_red) !important; - color: var(--theme--callout_red-text) !important; -} - -/* fix highlight padding: this isn't a typo */ -[style*='background:rgb('] { - padding-bottom: 3px !important; -} - -/** code **/ - -[style*='color:#EB5757'] { - color: var(--theme--code_inline-text) !important; - background: var(--theme--code_inline-background) !important; -} - -.notion-page-content .notion-code-block { - background: var(--theme--code-background) !important; -} -.notion-code-block > div { - color: var(--theme--code-text) !important; -} -.notion-code-block .token.function { - color: var(--theme--code_function) !important; -} -.notion-code-block .token.parameter { - color: var(--theme--code_parameter) !important; -} -.notion-code-block .token.keyword { - color: var(--theme--code_keyword) !important; -} -.notion-code-block .token.constant { - color: var(--theme--code_constant) !important; -} -.notion-code-block .token.tag { - color: var(--theme--code_tag) !important; -} -.notion-code-block .token.operator { - color: var(--theme--code_operator) !important; -} -.notion-code-block .token.important { - color: var(--theme--code_important) !important; -} -.notion-code-block .token.regex { - color: var(--theme--code_regex) !important; -} -.notion-code-block .token.property { - color: var(--theme--code_property) !important; -} -.notion-code-block .token.builtin { - color: var(--theme--code_builtin) !important; -} -.notion-code-block .token.class-name { - color: var(--theme--code_class-name) !important; -} -.notion-code-block .token.attr-name { - color: var(--theme--code_attr-name) !important; -} -.notion-code-block .token.attr-value { - color: var(--theme--code_attr-value) !important; -} -.notion-code-block .token.selector { - color: var(--theme--code_selector) !important; -} -.notion-code-block .token.id { - color: var(--theme--code_id) !important; -} -.notion-code-block .token.class { - color: var(--theme--code_class) !important; -} -.notion-code-block .token.pseudo-element { - color: var(--theme--code_pseudo-element) !important; -} -.notion-code-block .token.pseudo-class { - color: var(--theme--code_pseudo-class) !important; -} -.notion-code-block .token.attribute { - color: var(--theme--code_attribute) !important; -} -.notion-code-block .token.value { - color: var(--theme--code_value) !important; -} -.notion-code-block .token.unit { - color: var(--theme--code_unit) !important; -} -.notion-code-block .token.comment { - color: var(--theme--code_comment) !important; -} -.notion-code-block .token.punctuation { - color: var(--theme--code_punctuation) !important; -} -.notion-code-block .token.annotation { - color: var(--theme--code_annotation) !important; -} -.notion-code-block .token.decorator { - color: var(--theme--code_decorator) !important; -} -.notion-code-block .token.doctype { - color: var(--theme--code_doctype) !important; -} -.notion-code-block .token.number { - color: var(--theme--code_number) !important; -} -.notion-code-block .token.string { - color: var(--theme--code_string) !important; -} -.notion-code-block .token.boolean { - color: var(--theme--code_boolean) !important; -} diff --git a/temp/core/css/titlebar.css b/temp/core/css/titlebar.css deleted file mode 100644 index 9ab225c..0000000 --- a/temp/core/css/titlebar.css +++ /dev/null @@ -1,48 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * under the MIT license - */ - -@import './buttons.css'; - -.frameless .notion-topbar { - height: calc(var(--configured--dragarea_height, 15px) + 45px) !important; -} -.frameless .window-dragarea { - height: var(--configured--dragarea_height, 15px); - width: 100%; -} -.frameless .window-dragarea { - background: var(--theme--dragarea); -} - -.frameless [style*='top: 10.4972px'] { - top: calc(10.4972px + var(--configured--dragarea_height, 15px)) !important; -} - -@media (max-width: 760px) { - .frameless .notion-topbar { - height: calc(var(--configured--dragarea_height, 15px) + 80px) !important; - } - .frameless .notion-topbar > :nth-child(2) { - height: 80px !important; - display: grid !important; - grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr; - } - .window-buttons-area { - grid-row: 1; - grid-column: 9 / span end; - justify-content: flex-end; - } - .notion-topbar-breadcrumb { - grid-row: 2; - grid-column: 1 / span 8; - } - .notion-topbar-actions { - grid-row: 2; - grid-column: 9 / span end; - justify-content: flex-end; - } -} diff --git a/temp/core/enhancerMenu.js b/temp/core/enhancerMenu.js deleted file mode 100644 index 909c251..0000000 --- a/temp/core/enhancerMenu.js +++ /dev/null @@ -1,762 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -'use strict'; - -const store = require('../../pkg/store.js'), - { createElement, getEnhancements } = require('../../pkg/helpers.js'), - fs = require('fs-extra'), - path = require('path'), - electron = require('electron'), - { toKeyEvent } = require('keyboardevent-from-electron-accelerator'); - -window['__start'] = async () => { - document.body.setAttribute('data-platform', process.platform); - - // mod loader - const modules = getEnhancements(); - if (modules.loaded.length) { - console.info( - ` enhancements loaded: ${modules.loaded - .map((mod) => mod.name) - .join(', ')}.` - ); - } - if (modules.invalid.length) { - createAlert( - 'error', - `invalid mods found: ${modules.invalid - .map((mod) => `${mod}`) - .join(', ')}.` - ).append(); - } - const coreStore = (...args) => { - const mod = modules.loaded.find( - (m) => m.id === '0f0bf8b6-eae6-4273-b307-8fc43f2ee082' - ); - return !args.length - ? store(mod.id, mod.defaults) - : args.length === 1 && typeof args[0] === 'object' - ? store(mod.id, { ...mod.defaults, ...args[0] }) - : store(args[0], { ...mod.defaults, ...args[1] }); - }; - - electron.ipcRenderer.send('enhancer:get-app-theme'); - electron.ipcRenderer.on('enhancer:set-app-theme', (event, theme) => { - document.body.className = `notion-${theme}-theme`; - }); - - const buttons = require('./buttons.js')(() => ({ - '72886371-dada-49a7-9afc-9f275ecf29d3': { - enabled: (store('mods')['72886371-dada-49a7-9afc-9f275ecf29d3'] || {}) - .enabled, - }, - tiling_mode: coreStore().tiling_mode, - frameless: coreStore().frameless, - })); - document.querySelector('#titlebar').appendChild(buttons.element); - - function createAlert(type, message) { - if (!type) - throw Error(' @ createAlert: no alert type specified'); - const el = createElement(` - - `); - return { - el, - resolve() { - el.remove(); - }, - prepend() { - document.querySelector('#alerts').prepend(el); - return this; - }, - append() { - document.querySelector('#alerts').appendChild(el); - return this; - }, - }; - } - - // update checker - fetch( - `https://api.github.com/repos/notion-enhancer/notion-enhancer/releases/latest` - ) - .then((res) => res.json()) - .then((res) => { - const raw_v = require('./mod.js').version, - version = { - local: raw_v.split(/[~-]/g)[0], - repo: res.tag_name.slice(1), - }; - if (version.local == version.repo) return; - // compare func from https://github.com/substack/semver-compare - version.sorted = [version.local, version.repo].sort((a, b) => { - const pa = a.split('.'), - pb = b.split('.'); - for (let i = 0; i < 3; i++) { - let na = Number(pa[i]), - nb = Number(pb[i]); - if (na > nb) return 1; - if (nb > na) return -1; - if (!isNaN(na) && isNaN(nb)) return 1; - if (isNaN(na) && !isNaN(nb)) return -1; - } - return 0; - }); - createAlert( - 'warning', - version.sorted[0] == version.local - ? `update v${version.repo} available!
- run npm i -g notion-enhancer` - : `local build v${raw_v} is unstable.` - ).prepend(); - }); - - const $popup = document.querySelector('#popup'); - document.addEventListener('keyup', (event) => { - if (event.key === 'F5') location.reload(); - // further-configuration popup - if ( - $popup.classList.contains('visible') && - ['Enter', 'Escape'].includes(event.key) - ) - $popup.classList.remove('visible'); - // close window on hotkey toggle - if (coreStore().menu_toggle) { - const hotkey = { - ctrlKey: false, - metaKey: false, - altKey: false, - shiftKey: false, - ...toKeyEvent(coreStore().menu_toggle), - }; - let triggered = true; - for (let prop in hotkey) - if ( - hotkey[prop] !== event[prop] && - !(prop === 'key' && event[prop] === 'Dead') - ) - triggered = false; - if (triggered || ((event.ctrlKey || event.metaKey) && event.key === 'w')) - electron.remote.getCurrentWindow().close(); - } - // focus search - const meta = - !(event.ctrlKey || event.metaKey) && !event.altKey && !event.shiftKey; - if ( - meta && - document.activeElement.getAttribute('tabindex') === '0' && - event.key === 'Enter' - ) - document.activeElement.click(); - if (document.activeElement.tagName.toLowerCase() === 'input') { - if (document.activeElement.type === 'checkbox' && event.key === 'Enter') - document.activeElement.checked = !document.activeElement.checked; - if ( - ['Escape', 'Enter'].includes(event.key) && - document.activeElement.type !== 'checkbox' && - (document.activeElement.parentElement.id !== 'search' || - event.key === 'Escape') - ) - document.activeElement.blur(); - } else if (meta && event.key === '/') - document.querySelector('#search > input').focus(); - if ( - (event.ctrlKey || event.metaKey) && - event.key === 'f' && - !event.altKey && - !event.shiftKey - ) - document.querySelector('#search > input').focus(); - }); - - let colorpicker_target = null; - const $colorpicker = colorjoe - .rgb('colorpicker') - .on('change', function (color) { - if (!colorpicker_target) return; - colorpicker_target.elem.style.setProperty( - '--configured--color-value', - color.css() - ); - store(colorpicker_target.id)[colorpicker_target.key] = color.css(); - }) - .update(); - document - .querySelector('#colorpicker') - .appendChild(createElement('')); - document.querySelectorAll('#popup .close-modal').forEach((el) => - el.addEventListener('click', (event) => { - $popup.classList.remove('visible'); - }) - ); - - const conflicts = { - relaunch: null, - detected: () => - store('mods', { - conflicts: { dark: false, light: false }, - }).conflicts, - alerts: [], - check() { - document.body.classList.remove('conflict'); - conflicts.alerts.forEach((alert) => alert.resolve()); - conflicts.alerts = []; - const enabled = modules.loaded.filter( - (mod) => - store('mods', { [mod.id]: { enabled: false } })[mod.id].enabled && - mod.tags.includes('theme') - ), - dark = enabled.filter((mod) => mod.tags.includes('dark')), - light = enabled.filter((mod) => mod.tags.includes('light')); - for (let mode of [ - [dark, 'dark'], - [light, 'light'], - ]) { - const conflictID = mode[0] - .map((mod) => mod.id) - .sort() - .join('||'); - if ( - conflicts.detected()[mode[1]] && - conflicts.detected()[mode[1]][0] === conflictID && - conflicts.detected()[mode[1]][1] - ) - continue; - if (mode[0].length > 1) { - document.body.classList.add('conflict'); - conflicts.detected()[mode[1]] = [conflictID, false]; - const alert = createAlert( - 'error', - `conflicting ${mode[1]} themes: ${mode[0] - .map((mod) => `${mod.name}`) - .join( - ', ' - )}.
resolve or dismiss to continue.` - ); - alert.el - .querySelector('[data-action="dismiss"]') - .addEventListener('click', (event) => { - conflicts.detected()[mode[1]] = [conflictID, true]; - conflicts.check(); - }); - alert.append(); - conflicts.alerts.push(alert); - } else conflicts.detected()[mode[1]] = false; - } - search(); - }, - }; - function modified() { - conflicts.check(); - if (conflicts.relaunch) return; - conflicts.relaunch = createAlert( - 'info', - 'changes may not fully apply until app relaunch.' - ); - conflicts.relaunch.el - .querySelector('[data-action="relaunch"]') - .addEventListener('click', (event) => { - electron.remote.app.relaunch(); - electron.remote.app.quit(); - }); - conflicts.relaunch.append(); - } - - const search_filters = { - enabled: true, - disabled: true, - tags: new Set( - modules.loaded - .map((mod) => mod.tags) - .flat() - .sort() - ), - }; - function innerText(elem) { - let text = ''; - for (let $node of elem.childNodes) { - if ($node.nodeType === 3) text += $node.textContent; - if ($node.nodeType === 1) { - if ($node.getAttribute('data-tooltip')) - text += $node.getAttribute('data-tooltip'); - text += ['text', 'number'].includes($node.type) - ? $node.value - : innerText($node); - } - } - return text; - } - function search() { - modules.loaded.forEach((mod) => { - const $search_input = document.querySelector('#search > input'), - conflictingIDs = [conflicts.detected().dark, conflicts.detected().light] - .filter((conflict) => conflict && !conflict[1]) - .map(([mods, dismissed]) => mods.split('||')) - .flat(); - if ( - conflictingIDs.length || - document.body.classList.contains('reorder') - ) { - $search_input.disabled = true; - } else $search_input.disabled = false; - if ( - !document.body.classList.contains('reorder') && - (conflictingIDs.length - ? !conflictingIDs.some((id) => id.includes(mod.id)) - : (mod.elem.classList.contains('enabled') && - !search_filters.enabled) || - (mod.elem.classList.contains('disabled') && - !search_filters.disabled) || - !mod.tags.some((tag) => search_filters.tags.has(tag)) || - ($search_input.value && - !innerText(mod.elem) - .toLowerCase() - .includes($search_input.value.toLowerCase().trim()))) - ) - return (mod.elem.style.display = 'none'); - mod.elem.style.display = 'block'; - }); - } - document.querySelector('#search > input').addEventListener('input', search); - - function createTag(tagname, onclick, color) { - if (!tagname) - throw Error(' @ createTag: no tagname specified'); - if (!onclick) - throw Error(' @ createTag: no action specified'); - const el = createElement( - `${tagname}` - ); - document.querySelector('#tags').append(el); - el.addEventListener('click', (event) => { - if ( - !document.body.classList.contains('reorder') && - !document.body.classList.contains('conflict') - ) { - el.className = el.className === 'selected' ? '' : 'selected'; - onclick(el.className === 'selected'); - } - }); - return el; - } - createTag('enabled', (state) => [ - ((search_filters.enabled = state), search()), - ]); - createTag('disabled', (state) => [ - (search_filters.disabled = state), - search(), - ]); - for (let tag of search_filters.tags) - createTag(`#${tag}`, (state) => [ - state ? search_filters.tags.add(tag) : search_filters.tags.delete(tag), - search(), - ]); - - // mod info + options - function markdown(string) { - const parsed = string - .split('\n') - .map((line) => - line - .trim() - .replace(/\s+/g, ' ') - // > quote - .replace(/^>\s+(.+)$/g, '
$1
') - // ~~strikethrough~~ - .replace(/([^\\])?~~((?:(?!~~).)*[^\\])~~/g, '$1$2') - // __underline__ - .replace(/([^\\])?__((?:(?!__).)*[^\\])__/g, '$1$2') - // **bold** - .replace(/([^\\])?\*\*((?:(?!\*\*).)*[^\\])\*\*/g, '$1$2') - // *italic* - .replace(/([^\\])?\*([^*]*[^\\*])\*/g, '$1$2') - // _italic_ - .replace(/([^\\])?_([^_]*[^\\_])_/g, '$1$2') - // `code` - .replace(/([^\\])?`([^`]*[^\\`])`/g, '$1$2') - // ![image_title](source) - .replace( - /([^\\])?\!\[([^\]]*[^\\\]]?)\]\(([^)]*[^\\)])\)/g, - `$1$2` - ) - // [link](destination) - .replace( - /([^\\])?\[([^\]]*[^\\\]]?)\]\(([^)]*[^\\)])\)/g, - '$1$2' - ) - ) - .map((line) => - line.startsWith('
') ? line : `

${line}

` - ) - .join(''); - return parsed; - } - - const file_icon = await fs.readFile( - path.resolve(`${__dirname}/icons/file.svg`) - ), - question_icon = ( - await fs.readFile(path.resolve(`${__dirname}/icons/question.svg`)) - ).toString(); - function createOption(opt, id) { - let $opt; - const desc = opt.desc - ? question_icon.replace( - ' - - `; - break; - case 'select': - $opt = ` - - - `; - break; - case 'input': - $opt = ` - - - `; - break; - case 'color': - $opt = ` - - - `; - break; - case 'file': - $opt = ` - - - `; - } - $opt = createElement(`

${$opt}

`); - if (opt.type === 'color') { - $opt - .querySelector(`#${opt.type}_${id}--${opt.key}`) - .style.setProperty( - '--configured--color-value', - store(id, { [opt.key]: opt.value })[opt.key] - ); - } else if (opt.type === 'file') { - $opt.querySelector('.clear').addEventListener('click', (event) => { - store(id)[opt.key] = ''; - $opt.querySelector('.path').innerText = 'choose a file...'; - }); - } else { - $opt.querySelector(`#${opt.type}_${id}--${opt.key}`).value = store(id, { - [opt.key]: opt.type === 'select' ? opt.value[0] : opt.value, - })[opt.key]; - } - - return $opt; - } - - const $modules = document.querySelector('#modules'), - fileExists = (file) => fs.pathExistsSync(path.resolve(file)); - - for (let mod of modules.loaded) { - const enabled = - mod.alwaysActive || - store('mods', { - [mod.id]: { enabled: false }, - })[mod.id].enabled, - author = - typeof mod.author === 'object' - ? mod.author - : { - name: mod.author, - link: `https://github.com/${mod.author}`, - avatar: `https://github.com/${mod.author}.png`, - }; - if (enabled) { - for (let sheet of ['menu', 'variables']) { - if (fileExists(`${__dirname}/../${mod.dir}/${sheet}.css`)) { - document.head.appendChild( - createElement( - `` - ) - ); - } - } - } - mod.elem = createElement(` -
-
-

${mod.name}` - : `class="toggle"> - - ` - }

-

${mod.tags - .map((tag) => (tag.startsWith('#') ? tag : `#${tag}`)) - .join(' ')}

-
${markdown(mod.desc)}
-

- - - ${author.name} - - v${mod.version} -

-
- ${ - mod.options && mod.options.length - ? '
' - : '' - } -
- `); - const $enable = mod.elem.querySelector(`#enable_${mod.id}`); - if ($enable) - $enable.addEventListener('click', (event) => { - store('mods', { [mod.id]: { enabled: false } })[mod.id].enabled = - $enable.checked; - mod.elem.className = store('mods', { [mod.id]: { enabled: false } })[ - mod.id - ].enabled - ? 'enabled' - : 'disabled'; - if ( - $enable.checked && - coreStore().autoresolve && - mod.tags.includes('theme') - ) { - modules.loaded.forEach((other) => { - const $other_enable = other.elem.querySelector( - `#enable_${other.id}` - ); - if ( - other !== mod && - $other_enable && - $other_enable.checked && - other.tags.includes('theme') - ) { - for (let mode of ['dark', 'light']) - if (other.tags.includes(mode) && mod.tags.includes(mode)) - $other_enable.click(); - } - }); - } - search(); - modified(); - }); - - const $options = mod.elem.querySelector('.options'); - if ($options) - for (const opt of mod.options) { - if ( - Object.keys(opt.platformOverwrite || {}).some( - (platform) => process.platform === platform - ) - ) { - continue; - } - const $opt = createOption(opt, mod.id); - if (opt.type === 'color') { - const $preview = $opt.querySelector('input'); - $opt.addEventListener('click', (event) => { - colorpicker_target = { - id: mod.id, - key: opt.key, - elem: $preview, - }; - $colorpicker.set(store(mod.id)[opt.key]); - $popup.classList.add('visible'); - }); - } else { - $opt - .querySelector(`#${opt.type}_${mod.id}--${opt.key}`) - .addEventListener('change', (event) => { - modified(); - if (opt.type === 'toggle') { - store(mod.id)[opt.key] = event.target.checked; - } else if (opt.type === 'file') { - if (event.target.files.length) - store(mod.id)[opt.key] = event.target.files[0].path; - $opt.querySelector('.path').innerText = store(mod.id)[opt.key] - ? store(mod.id)[opt.key].split(path.sep).reverse()[0] - : 'choose a file...'; - } else - store(mod.id)[opt.key] = - typeof opt.value === 'number' - ? +event.target.value - : event.target.value; - }); - } - $options.appendChild($opt); - } - if (mod.tags.includes('core')) $modules.append(mod.elem); - } - document - .querySelectorAll('input[type="checkbox"]') - .forEach((checkbox) => - checkbox.addEventListener('click', (event) => event.target.blur()) - ); - conflicts.check(); - - // draggable re-ordering - const draggable = { - state: 0, - tags: ['b', 'span'], - $toggle: document.querySelector('#draggable-toggle'), - list: modules.loaded - .filter((m) => !m.tags.includes('core')) - .map((m) => m.elem), - target: null, - render() { - draggable.target = null; - for (let $node of draggable.list) { - $node.draggable = false; - $modules.append($node); - } - }, - mouseover(event) { - if (!draggable.target && event.target.innerText) { - for (let $node of draggable.list) $node.draggable = false; - const $node = draggable.list.find( - (node) => node.innerText === event.target.innerText - ); - if ($node) $node.draggable = draggable.state; - } - }, - }; - document.addEventListener('dragstart', (event) => { - draggable.target = event.target; - event.target.style.opacity = 0.5; - }); - document.addEventListener('dragend', (event) => { - event.target.style.opacity = ''; - }); - document.addEventListener('dragover', (event) => { - event.preventDefault(); - document - .querySelectorAll('.dragged-over') - .forEach((el) => el.classList.remove('dragged-over')); - const $node = [ - draggable.list[0].previousElementSibling, - ...draggable.list, - ].find((node) => node.innerText === event.target.innerText); - if ($node) $node.classList.add('dragged-over'); - }); - document.addEventListener('drop', (event) => { - event.preventDefault(); - document - .querySelectorAll('.dragged-over') - .forEach((el) => el.classList.remove('dragged-over')); - if ( - draggable.target && - draggable.target.innerText !== event.target.innerText - ) { - const from = draggable.list.findIndex( - (node) => node.innerText === draggable.target.innerText - ), - to = - event.target.innerText === - draggable.list[0].previousElementSibling.innerText - ? 0 - : draggable.list.findIndex( - (node) => node.innerText === event.target.innerText - ) + 1; - if (to >= 0) { - draggable.list.splice( - to > from ? to - 1 : to, - 0, - draggable.list.splice(from, 1)[0] - ); - store('mods').priority = draggable.list.map((m) => m.id); - } - } - draggable.render(); - modified(); - }); - document.addEventListener('mouseover', draggable.mouseover); - draggable.render(); - draggable.$toggle.addEventListener('click', (event) => { - draggable.state = !draggable.state; - draggable.tags = draggable.tags.reverse(); - draggable.$toggle.innerHTML = ` - <${draggable.tags[0]} data-bolded="configure">configure | - <${draggable.tags[1]} data-bolded="reorder">reorder - `; - document.body.classList[draggable.state ? 'add' : 'remove']('reorder'); - $modules - .querySelectorAll('input') - .forEach((input) => (input.disabled = draggable.state)); - search(); - }); - - const $tooltip = document.querySelector('#tooltip'); - document.querySelectorAll('[data-tooltip]').forEach((el) => { - el.addEventListener('mouseenter', (e) => { - $tooltip.innerText = el.getAttribute('data-tooltip'); - $tooltip.classList.add('active'); - }); - el.addEventListener('mouseover', (e) => { - $tooltip.style.top = e.clientY - $tooltip.clientHeight + 'px'; - $tooltip.style.left = - e.clientX < window.innerWidth / 2 ? e.clientX + 'px' : ''; - $tooltip.style.right = - e.clientX > window.innerWidth / 2 - ? window.innerWidth - e.clientX + 'px' - : ''; - }); - el.addEventListener('mouseleave', (e) => - $tooltip.classList.remove('active') - ); - }); -}; diff --git a/temp/core/icons/alwaysontop_off.svg b/temp/core/icons/alwaysontop_off.svg deleted file mode 100644 index 96afcf0..0000000 --- a/temp/core/icons/alwaysontop_off.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/temp/core/icons/alwaysontop_on.svg b/temp/core/icons/alwaysontop_on.svg deleted file mode 100644 index 3fec5d5..0000000 --- a/temp/core/icons/alwaysontop_on.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/temp/core/icons/close.svg b/temp/core/icons/close.svg deleted file mode 100644 index 7268fb0..0000000 --- a/temp/core/icons/close.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/temp/core/icons/file.svg b/temp/core/icons/file.svg deleted file mode 100644 index 81c387e..0000000 --- a/temp/core/icons/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/temp/core/icons/mac+linux.png b/temp/core/icons/mac+linux.png deleted file mode 100644 index 3a7708f..0000000 Binary files a/temp/core/icons/mac+linux.png and /dev/null differ diff --git a/temp/core/icons/maximize_off.svg b/temp/core/icons/maximize_off.svg deleted file mode 100644 index 0bf56b0..0000000 --- a/temp/core/icons/maximize_off.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/temp/core/icons/maximize_on.svg b/temp/core/icons/maximize_on.svg deleted file mode 100644 index af77a3e..0000000 --- a/temp/core/icons/maximize_on.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/temp/core/icons/minimize.svg b/temp/core/icons/minimize.svg deleted file mode 100644 index d179e14..0000000 --- a/temp/core/icons/minimize.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/temp/core/icons/question.svg b/temp/core/icons/question.svg deleted file mode 100644 index 3389568..0000000 --- a/temp/core/icons/question.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/temp/core/icons/user.png b/temp/core/icons/user.png deleted file mode 100644 index 252c20d..0000000 Binary files a/temp/core/icons/user.png and /dev/null differ diff --git a/temp/core/icons/windows.ico b/temp/core/icons/windows.ico deleted file mode 100644 index 3f8a1c7..0000000 Binary files a/temp/core/icons/windows.ico and /dev/null differ diff --git a/temp/core/menu.css b/temp/core/menu.css deleted file mode 100644 index 412c901..0000000 --- a/temp/core/menu.css +++ /dev/null @@ -1,655 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 admiraldus (https://github.com/admiraldus) - * under the MIT license - */ - -@import './css/buttons.css'; -@import './css/scrollbars.css'; - -@keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@keyframes fade { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - -* { - box-sizing: border-box; - word-break: break-word; - text-decoration: none; - text-size-adjust: 100%; - font-family: var(--theme--font_sans); - outline-color: var(--theme--table-border); -} -html, -body { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - display: block; - overflow: hidden; - background: var(--theme--main); - color: var(--theme--text); -} - -main { - padding: 1em 1em 2.9em 1em; - height: 100%; - overflow: auto; -} -main section { - border-radius: 2px; - margin-bottom: 0.75em; -} - -/* inline formatting */ - -code { - border-radius: 0.1em; - padding: 0.2em 0.4em; - font: 0.85em var(--theme--font_code); - background: var(--theme--code_inline-background); -} - -button { - color: var(--theme--text); -} - -u { - text-decoration: underline; -} -s { - text-decoration: line-through; -} - -/* titlebar */ - -#titlebar::before { - content: ''; - position: absolute; - width: 100%; - -webkit-app-region: no-drag; - top: 0; - left: 0; - height: 2px; -} - -#titlebar { - display: flex; - -webkit-app-region: drag; - background: var(--theme--dragarea); -} -#titlebar button { - -webkit-app-region: no-drag; -} -#titlebar .window-buttons-area { - margin: 0.4em 0.4em 0.4em auto; -} -#titlebar .window-buttons-area:empty { - display: none; -} -[data-platform='darwin'] #titlebar { - height: 2.65em; -} - -/* alerts */ - -#alerts [role='alert'] { - display: flex; - padding: 0.75em; - background: var(--theme--interactive_hover); - border: 1px solid var(--theme--interactive_hover-border); -} -#alerts [role='alert']::before { - content: '!'; - display: block; - /* margin: auto 0; */ - font-weight: bold; - font-size: 1.2em; - padding-right: 0.5rem; - color: var(--theme--interactive_hover-border); -} -#alerts [role='alert'] p { - font-size: 1rem; - margin: auto 0; - padding-left: 0.5em; - color: var(--theme--line_text); -} - -#alerts .error::before { - color: var(--theme--select_red); -} -#alerts .error { - color: var(--theme--line_red-text); - background: var(--theme--line_red); - border-color: var(--theme--select_red); -} -#alerts .warning::before { - color: var(--theme--select_yellow); -} -#alerts .warning { - color: var(--theme--line_yellow-text); - background: var(--theme--line_yellow); - border-color: var(--theme--select_yellow); -} -#alerts .info::before { - color: var(--theme--select_blue); -} -#alerts .info { - color: var(--theme--line_blue-text); - background: var(--theme--line_blue); - border-color: var(--theme--select_blue); -} -#alerts .success::before { - content: '✓'; - color: var(--theme--select_green); -} -#alerts .success { - color: var(--theme--line_green-text); - background: var(--theme--line_green); - border-color: var(--theme--select_green); -} - -#alerts code { - background: transparent; - text-decoration: underline; -} - -[data-action] { - text-decoration: underline dotted; - cursor: pointer; -} - -/* search */ - -#search { - position: relative; - margin-bottom: 0.75em; -} - -#search > svg { - position: absolute; - width: 1em; - height: 1em; - top: 1.3em; - left: 1em; -} -#search > svg path { - fill: var(--theme--text_ui_info); -} -#search > input { - width: 100%; - padding: 1em 1.4em 1em 2.8em; - font: 1em var(--theme--font_sans); - background: var(--theme--card); - border: 1px solid var(--theme--table-border); - color: var(--theme--text); - border-radius: 2px; -} -#search > input::placeholder { - font-weight: bold; - color: var(--theme--text_ui_info); -} -#search > input:focus { - box-shadow: var(--theme--table-border) 0.04em 0.04em, - var(--theme--table-border) -0.04em -0.04em, - var(--theme--table-border) -0.04em 0.04em, - var(--theme--table-border) 0.04em -0.04em; - outline: none; -} - -#search #tags > span { - cursor: pointer; - display: inline-block; - font-size: 0.8em; - padding: 0.2em 0.5em; - margin-top: 0.5em; - background: var(--theme--option-background); - color: var(--theme--option-color); - border-radius: 2px; - transition: color 200ms, background 200ms, opacity 200ms; - user-select: none; -} -#search #tags > span:not(:last-child) { - margin-right: 0.5em; -} -#search #tags > span:hover { - background: var(--theme--option_hover-background); - color: var(--theme--option_hover-color); -} -#search #tags > span::before { - content: '× '; -} -#search #tags > .selected { - background: var(--tag_color, var(--theme--option_active-background)); - color: var(--theme--option_active-color); -} -#search #tags > .selected::before { - content: '✓ '; -} - -/* module meta */ - -#modules { - position: relative; -} -#modules section { - background: var(--theme--sidebar); - border: 1px solid var(--theme--table-border); -} -#modules section > div { - padding: 0.75em; -} -.notion-light-theme #modules section { - background: var(--theme--main); -} - -#modules section h3, -#modules section p { - margin: 0; - font-size: 1rem; -} - -#modules section .desc { - margin: 0.3em 0 0.4em 0; - font-size: 0.9em; -} -#modules section .desc p { - font-size: inherit; - margin: 0; -} -#modules section .desc blockquote { - margin: 0.3em 0; - border-left: 0.3em solid var(--theme--table-border); - padding-left: 0.7em; -} - -#modules section .desc a { - color: currentColor; - text-decoration: underline dotted; -} - -#modules section .desc img { - width: 100%; - max-width: 20em; - margin: 0.5em 0; -} -#modules section .desc :first-child img:first-child { - margin-top: 0; -} -#modules section .desc :last-child img:last-child { - margin-bottom: 0; -} - -#modules section .author { - color: currentColor; -} -#modules section .author img { - height: 1em; - width: 1em; - margin-bottom: 0.15625em; - display: inline-block; - vertical-align: middle; - border-radius: 50%; - object-fit: cover; -} -#modules section .tags, -#modules section .version { - font-size: 0.85em; - color: var(--theme--text_ui); -} - -/* module options */ - -#modules .disabled .options { - display: none; -} -#modules section .options { - border-top: 1px solid var(--theme--table-border); - background: var(--theme--card); -} -#modules section .options p { - font-size: 0.9em; -} -#modules section .options p:not(:last-child) { - padding-bottom: 0.5em; - border-bottom: 0.5px solid var(--theme--table-border); - margin-bottom: 0.5em; -} - -svg[data-tooltip] { - height: 1em; - width: 1em; - margin: 0 0 -2px 1px; - color: var(--theme--text_ui_info); -} -#tooltip { - pointer-events: none; - position: absolute; - padding: 0.25em 0.5em 0.5em 0.5em; - margin: 0 1em; - border-radius: 3px; - box-shadow: var(--theme--box-shadow_strong); - border-right-width: 1px; - font-size: calc(var(--theme--font_label-size) * 0.8); - background: var(--theme--interactive_hover); - opacity: 0; - transition: opacity 120ms ease-in; -} -#tooltip.active { - opacity: 1; -} - -.toggle *, -.input *, -.select *, -.color *, -.file * { - cursor: pointer; -} -.select select, -.input input[type='text'], -.input input[type='number'], -.file input[type='file'] + label .choose { - width: 100%; - margin: 0.25em 0; - font-size: 0.9rem; - padding: 0.4rem 0.2rem; - border: none; - color: var(--theme--text); - background: var(--theme--main); -} -.select select:focus, -.input input[type='text']:focus, -.input input[type='number']:focus, -.file input[type='file']:focus + label .choose, -.file input[type='file'] + label .choose:hover { - outline: var(--theme--table-border) solid 2px; -} -.file input[type='file'], -.toggle input[type='checkbox'] { - opacity: 0; - width: 0.1px; - height: 0.1px; - position: fixed; -} - -.input input[type='text'], -.input input[type='number'] { - padding: 0.4rem; - cursor: text; -} - -.file input[type='file'] + label .label { - position: relative; - display: flex; -} -.file input[type='file'] + label .label .name { - flex-basis: calc(100% - 1.5rem); -} -.file input[type='file'] + label .label .clear { - font-size: 1rem; - position: absolute; - top: 0.4em; - right: 0; - width: 1em; - height: 0.1em; - border: 0.35em solid var(--theme--card); - background: currentColor; -} -.file input[type='file'] + label .choose { - display: block; - white-space: nowrap; - overflow: hidden; -} -.file input[type='file'] + label .choose svg { - padding-top: 0.5em; - height: 1.25em; - width: 1.25em; -} - -.toggle input[type='checkbox'] + label { - display: flex; - --menu--toggle_bg: rgba(135, 131, 120, 0.3); -} -.toggle input[type='checkbox'] + label .name { - flex-basis: calc(100% - 2.25em); - margin-right: 0.75em; -} -.toggle input[type='checkbox'] + label .switch { - position: relative; - top: 0.2em; - float: right; - height: 1em; - width: 1.85em; - padding: 0.1em; - background: var(--menu--toggle_bg); - border-radius: 3.14em; - transition: background 300ms; -} -.toggle input[type='checkbox'] + label .switch::before { - content: ''; - display: block; - width: 0.8em; - height: 0.8em; - border-radius: 50%; - transform: translateX(var(--menu--toggle_offset, 0)); - transition: transform 350ms, box-shadow 350ms; - background: var(--theme--option_active-color); - /* box-shadow: 2px 1px 4px var(--theme--table-border); */ -} - -.toggle input[type='checkbox']:checked + label { - --menu--toggle_offset: 0.8em; - --menu--toggle_bg: var(--theme--primary); -} - -.color { - display: flex; -} -.color label { - flex-basis: 70%; -} -.color input[type='button'] { - flex-basis: 30%; - box-shadow: 2px 1px 4px var(--theme--table-border); - border: 1px solid var(--theme--option_active-color); - border-radius: 3px; - background: var(--configured--color-value); - margin: 0; -} -.color input[type='button']:focus { - box-shadow: 3px 2px 5px var(--theme--table-border); -} - -/* further-configuration popup */ - -#popup, -#popup-overlay { - position: absolute; - top: 0; - height: 100vh; - width: 100vw; -} -#popup { - display: none; -} -#popup.visible { - display: flex; - animation: fade 200ms ease; -} -#popup-overlay { - background: var(--theme--overlay); -} - -.colorPicker { - margin: auto; - position: relative; - border: 1px solid var(--theme--table-border); - background: var(--theme--card); -} - -.colorPicker .twod { - border-radius: 4px; -} -.colorPicker .twod .bg { - border-radius: 2px; -} -.colorPicker .oned, -.colorPicker .oned .bg { - margin-left: 0; - height: 212.5px; -} -.colorPicker .oned .bg { - border-radius: 4px; - border: 1px solid var(--theme--table-border); -} -.colorPicker > button { - display: block; - position: absolute; - bottom: 8px; - right: 8px; - margin: 0; - padding: 0; - border: none; - width: 21px; - height: 20px; - cursor: pointer; - background: transparent; - transition: background 0.2s; -} -.colorPicker > button::after { - content: '×'; - font-size: 1.5em; - position: relative; - bottom: 5px; -} -.colorPicker > button:hover { - background: var(--theme--interactive_hover); - border-radius: 4px; - box-shadow: 0 0 0 0.5px var(--theme--interactive_hover-border); -} -.colorPicker > button:focus { - outline: none; - box-shadow: 0 0 0 1px var(--theme--table-border); -} -.colorPicker .twod .pointer .shape.shape1 { - width: 11px; - height: 11px; -} -.colorPicker .twod .pointer .shape.shape2 { - width: 9px; - height: 9px; -} -.colorPicker .oned .pointer .shape { - height: 6.5px; - margin-left: 0; - border: 2px solid #fff; - box-shadow: 0 0 0 1px #000; -} -.shape { - cursor: pointer; -} - -@media (max-width: 300px) { - .colorPicker .twod, - .colorPicker .twod .bg { - width: 200px; - height: 200px; - } - .colorPicker .oned, - .colorPicker .oned .bg { - height: 172.5px; - } -} -@media (max-width: 250px) { - .colorPicker .twod, - .colorPicker .twod .bg { - width: 150px; - height: 150px; - } - .colorPicker .oned, - .colorPicker .oned .bg { - height: 132.5px; - } -} - -/* draggable re-ordering of mods */ - -#draggable-toggle { - background: none; - border: none; - margin-top: 0.8em; - padding-left: 0; - cursor: pointer; - color: var(--theme--text_ui); -} - -[data-bolded] { - display: inline-flex; - flex-direction: column; -} -[data-bolded]::after { - content: attr(data-bolded); - height: 0; - visibility: hidden; - overflow: hidden; - user-select: none; - pointer-events: none; - font-weight: bold; -} - -.reorder #search #tags > span, -.reorder #search #tags > span:hover, -.conflict #search #tags > span, -.conflict #search #tags > span:hover { - opacity: 0.7; - background: var(--theme--option-background); -} -.reorder #search #tags > .selected, -.reorder #search #tags > .selected:hover, -.conflict #search #tags > .selected, -.conflict #search #tags > .selected:hover { - background: var(--tag_color, var(--theme--option_active-background)); -} - -.reorder #modules .dragged-over::after { - content: ''; - height: 0.25em; - width: 99%; - position: absolute; - margin: 0.3em 0; - opacity: 0.7; - background: var(--theme--selected); -} - -.reorder #modules .switch, -.reorder #modules .tags, -.reorder #modules .desc, -.reorder #modules .options, -.reorder #modules .author, -.reorder #modules .version { - display: none; -} -.reorder #modules .core .toggle * { - cursor: text; -} -.reorder #modules section:not(.core) label::before { - content: '::'; - margin-right: 0.4em; - color: var(--theme--text_ui); -} diff --git a/temp/core/menu.html b/temp/core/menu.html deleted file mode 100644 index 8369d30..0000000 --- a/temp/core/menu.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - notion-enhancer menu - - - - - -
-
-
- -
-
- - - - - diff --git a/temp/core/mod.js b/temp/core/mod.js deleted file mode 100644 index f38e99f..0000000 --- a/temp/core/mod.js +++ /dev/null @@ -1,103 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -'use strict'; - -module.exports = { - id: '0f0bf8b6-eae6-4273-b307-8fc43f2ee082', - alwaysActive: true, - tags: ['core'], - name: 'notion-enhancer core', - desc: 'the cli, modloader, menu, & tray.', - version: require('../../package.json').version, - author: 'dragonwocky', - options: [ - { - key: 'autoresolve', - label: 'auto-resolve theme conflicts', - desc: - 'when a theme is enabled any other themes of the same mode (light/dark) will be disabled.', - type: 'toggle', - value: false, - }, - { - key: 'openhidden', - label: 'hide app on open', - desc: - 'app can be made visible by clicking the tray icon or using the hotkey.', - type: 'toggle', - value: false, - }, - { - key: 'maximized', - label: 'auto-maximise windows', - desc: - 'whenever a window is un-hidden or is created it will be maximised.', - type: 'toggle', - value: false, - }, - { - key: 'close_to_tray', - label: 'close window to the tray', - desc: `pressing the × close button will hide the app instead of quitting it.\ - it can be re-shown by clicking the tray icon or using the hotkey.`, - type: 'toggle', - value: true, - platformOverwrite: { - darwin: true, - }, - }, - { - key: 'frameless', - label: 'integrated titlebar', - desc: `replace the native titlebar with buttons inset into the app.`, - type: 'toggle', - value: true, - platformOverwrite: { - darwin: false, - }, - }, - { - key: 'tiling_mode', - label: 'tiling window manager mode', - desc: `completely remove the close/minimise/maximise buttons - - this is for a special type of window manager. if you don't understand it, don't use it.`, - type: 'toggle', - value: false, - }, - { - key: 'hotkey', - label: 'window display hotkey:', - desc: 'used to toggle hiding/showing all app windows.', - type: 'input', - value: 'CommandOrControl+Shift+A', - }, - { - key: 'menu_toggle', - label: 'open enhancements menu hotkey:', - desc: 'used to toggle opening/closing this menu while notion is focused.', - type: 'input', - value: 'Alt+E', - }, - { - key: 'default_page', - label: 'default page id/url:', - desc: `every new tab/window that isn't opening a url via the notion://\ - protocol will load this page. to get a page link from within the app,\ - go to the triple-dot menu and click "copy link".\ - leave blank to just load the last page you opened.`, - type: 'input', - value: '', - }, - ], - hacks: { - 'main/main.js': require('./tray.js'), - 'main/systemMenu.js': require('./systemMenu.js'), - 'main/createWindow.js': require('./createWindow.js'), - 'renderer/index.js': require('./render.js'), - 'renderer/preload.js': require('./client.js'), - }, -}; diff --git a/temp/core/render.js b/temp/core/render.js deleted file mode 100644 index cfc1857..0000000 --- a/temp/core/render.js +++ /dev/null @@ -1,1066 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -'use strict'; - -const url = require('url'), - path = require('path'), - electron = require('electron'), - fs = require('fs-extra'), - { - getNotionResources, - getEnhancements, - createElement, - } = require('../../pkg/helpers.js'), - __notion = getNotionResources(), - config = require(`${__notion}/app/config.js`), - constants = require(`${__notion}/app/shared/constants.js`), - notion_intl = require(`${__notion}/app/shared/notion-intl/index.js`), - notionIpc = require(`${__notion}/app/helpers/notionIpc.js`), - localizationHelper = require(`${__notion}/app/helpers/localizationHelper.js`), - koMessages = require(`${__notion}/app/i18n/ko_KR/messages.json`), - schemeHelpers = require(`${__notion}/app/shared/schemeHelpers.js`), - React = require(`${__notion}/app/node_modules/react/index.js`), - ReactDOM = require(`${__notion}/app/node_modules/react-dom/index.js`), - { toKeyEvent } = require('keyboardevent-from-electron-accelerator'); - -const insertCSP = `{ - const csp = document.createElement('meta'); - csp.httpEquiv = 'Content-Security-Policy'; - csp.content = "script-src 'self' 'unsafe-inline' 'unsafe-eval' enhancement: https://gist.github.com https://apis.google.com https://api.amplitude.com https://widget.intercom.io https://js.intercomcdn.com https://logs-01.loggly.com https://cdn.segment.com https://analytics.pgncs.notion.so https://checkout.stripe.com https://embed.typeform.com https://admin.typeform.com https://platform.twitter.com https://cdn.syndication.twimg.com; connect-src 'self' https://msgstore.www.notion.so wss://msgstore.www.notion.so https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https: http: https://api.amplitude.com https://api.embed.ly https://js.intercomcdn.com https://api-iam.intercom.io wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com https://api.segment.io https://api.pgncs.notion.so https://checkout.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://api.unsplash.com https://boards-api.greenhouse.io; font-src 'self' data: enhancement: https: http:; img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com; style-src 'self' 'unsafe-inline' enhancement: https: http:; frame-src https: http:; media-src https: http:"; - document.head.appendChild(csp); -}`, - idToNotionURL = (id) => - `notion://www.notion.so/${ - url.parse(id).pathname.split('/').reverse()[0] || '' - }/${url.parse(id).search || ''}`; - -module.exports = (store, __exports) => { - if ((store('mods')['e1692c29-475e-437b-b7ff-3eee872e1a42'] || {}).enabled) { - class Index extends React.PureComponent { - constructor() { - super(...arguments); - this.state = { - error: false, - searching: false, - searchingPeekView: false, - zoomFactor: 1, - tabs: new Map([[0, { title: 'notion.so', open: true }]]), - slideIn: new Set(), - slideOut: new Set(), - }; - this.$titlebar = null; - this.$dragging = null; - this.views = { - active: null, - current: { - $el: () => this.views.html[this.views.current.id], - id: 0, - }, - react: {}, - html: {}, - loaded: {}, - tabs: {}, - }; - this.$search = null; - this.handleReload = () => { - this.setState({ error: false }); - Object.values(this.views.html).forEach(($notion) => { - if ($notion.isWaitingForResponse()) $notion.reload(); - }); - }; - this.communicateWithView = this.communicateWithView.bind(this); - this.startSearch = this.startSearch.bind(this); - this.stopSearch = this.stopSearch.bind(this); - this.nextSearch = this.nextSearch.bind(this); - this.prevSearch = this.prevSearch.bind(this); - this.clearSearch = this.clearSearch.bind(this); - this.doneSearch = this.doneSearch.bind(this); - - // draggable re-ordering - const getTab = ($el) => { - if ($el.tagName !== 'BUTTON') $el = $el.parentElement; - if ($el.innerText === '+') - return [null, document.querySelector('.tab.new')]; - const tab = Object.entries(this.views.tabs).find( - ([id, $node]) => $node === $el - ); - return tab ? [+tab[0], tab[1]] : []; - }; - document.addEventListener('dragstart', (event) => { - if (!this.$titlebar) return; - const tab = getTab(event.target); - this.$dragging = tab[0]; - event.dataTransfer.setData( - 'text', - JSON.stringify({ - target: electron.remote.getCurrentWindow().webContents.id, - tab: tab[0], - title: tab[1].children[0].innerText, - url: document.getElementById(getTab(event.target)[0]).src, - }) - ); - event.target.style.opacity = 0.5; - }); - document.addEventListener('dragend', (event) => { - if (!this.$titlebar) return; - event.target.style.opacity = ''; - document - .querySelectorAll('.dragged-over') - .forEach((el) => el.classList.remove('dragged-over')); - }); - document.addEventListener('dragover', (event) => { - if (!this.$titlebar) return; - event.preventDefault(); - document - .querySelectorAll('.dragged-over') - .forEach((el) => el.classList.remove('dragged-over')); - const tab = getTab(event.target)[1]; - if (tab) tab.classList.add('dragged-over'); - }); - document.addEventListener('drop', async (event) => { - event.preventDefault(); - const eventData = JSON.parse(event.dataTransfer.getData('text')); - if ( - eventData.target !== - electron.remote.getCurrentWindow().webContents.id - ) { - electron.ipcRenderer.send( - 'enhancer:close-tab', - eventData.target, - eventData.tab - ); - this.$dragging = await this.newTab( - eventData.url, - eventData.title, - false - ); - } - if (this.$titlebar) { - const from = getTab(this.views.tabs[+this.$dragging]), - to = getTab(event.target); - if (from[0] !== to[0]) { - if (to[1].classList.contains('new')) { - const list = new Map(this.state.tabs); - list.delete(from[0]); - list.set(from[0], this.state.tabs.get(from[0])); - this.setState({ tabs: list }); - } else { - const list = [...this.state.tabs], - fromIndex = list.findIndex( - ([id, { title, open }]) => id === from[0] - ), - toIndex = list.findIndex( - ([id, { title, open }]) => id === to[0] - ); - list.splice( - toIndex > fromIndex ? toIndex - 1 : toIndex, - 0, - list.splice(fromIndex, 1)[0] - ); - this.setState({ tabs: new Map(list) }); - } - } - this.$dragging = null; - } - }); - electron.ipcRenderer.on('enhancer:close-tab', (event, tab) => { - this.closeTab(tab); - }); - } - - componentDidMount() { - const buttons = require('./buttons.js')(store); - this.$titlebar.appendChild(buttons.element); - this.loadListeners(); - - let electronWindow; - try { - electronWindow = electron.remote.getCurrentWindow(); - } catch (error) { - notionIpc.sendToMain('notion:log-error', { - level: 'error', - from: 'index', - type: 'GetCurrentWindowError', - error: error.message, - }); - } - if (!electronWindow) { - this.setState({ error: true }); - this.handleReload(); - return; - } - electronWindow.addListener('app-command', (e, cmd) => { - if (cmd === 'browser-backward' && webContents.canGoBack()) { - this.views.current.$el().goBack(); - } else if (cmd === 'browser-forward' && webContents.canGoForward()) { - this.views.current.$el().goForward(); - } - }); - electronWindow.addListener('swipe', (e, dir) => { - if (dir === 'left' && webContents.canGoBack()) { - this.views.current.$el().goBack(); - } else if (dir === 'right' && webContents.canGoForward()) { - this.views.current.$el().goForward(); - } - }); - electronWindow.addListener('focus', (e) => { - this.views.current.$el().focus(); - }); - } - - newTab(url = '', title = 'notion.so', animate = true) { - let id = 0; - const list = new Map(this.state.tabs); - while (this.state.tabs.get(id) && this.state.tabs.get(id).open) id++; - list.delete(id); - return this.openTab(id, { - state: list, - load: url || true, - title, - animate, - }); - } - openTab( - id, - { - state = new Map(this.state.tabs), - slideOut = new Set(this.state.slideOut), - load, - animate, - title = 'notion.so', - } = { - state: new Map(this.state.tabs), - slideOut: new Set(this.state.slideOut), - load: false, - title: 'notion.so', - animate: false, - } - ) { - return new Promise((res, rej) => { - if (!id && id !== 0) { - if (state.get(this.views.current.id).open) return res(id); - const currentIndex = [...state].findIndex( - ([id, { title, open }]) => id === this.views.current.id - ); - id = ([...state].find( - ([id, { title, open }], tabIndex) => - open && tabIndex > currentIndex - ) || [...state].find(([id, { title, open }]) => open))[0]; - } - const current_src = this.views.current.$el().src; - this.views.current.id = id; - this.setState( - { - tabs: state.set(id, { - title: state.get(id) ? state.get(id).title : title, - open: true, - }), - slideIn: animate - ? this.state.slideIn.add(id) - : this.state.slideIn, - slideOut: slideOut, - }, - async () => { - this.focusTab(); - new Promise((resolve, reject) => { - let attempt, - clear = () => { - clearInterval(attempt); - return true; - }; - attempt = setInterval(() => { - if (this.views.current.id !== id) return clear() && reject(); - if (document.body.contains(this.views.html[id])) - return clear() && resolve(); - }, 50); - }) - .then(() => { - if (load) { - this.views.html[id].style.opacity = '0'; - let unhide; - unhide = () => { - this.views.html[id].style.opacity = ''; - this.views.html[id].removeEventListener( - 'did-stop-loading', - unhide - ); - }; - this.views.html[id].addEventListener( - 'did-stop-loading', - unhide - ); - this.views.html[id].loadURL( - typeof load === 'string' - ? load - : store().default_page - ? idToNotionURL(store().default_page) - : current_src - ); - } - }) - .catch(() => { - // nothing - }) - .finally(() => { - setTimeout(() => { - this.setState( - { slideIn: new Set(), slideOut: new Set() }, - () => res(id) - ); - }, 150); - }); - } - ); - }); - } - closeTab(id) { - if ((!id && id !== 0) || !this.state.tabs.get(id)) return; - const list = new Map(this.state.tabs); - list.set(id, { ...list.get(id), open: false }); - if (![...list].filter(([id, { title, open }]) => open).length) - return electron.remote.getCurrentWindow().close(); - return this.openTab( - this.views.current.id === id ? null : this.views.current.id, - { state: list, slideOut: this.state.slideOut.add(id) } - ); - } - focusTab() { - if (this.views.active === this.views.current.id) return; - this.loadListeners(); - this.blurListeners(); - this.focusListeners(); - for (const id in this.views.loaded) { - if (this.views.loaded.hasOwnProperty(id) && this.views.loaded[id]) { - const selected = - id == this.views.current.id && - this.state.tabs.get(+id) && - this.state.tabs.get(+id).open; - this.views.loaded[id].style.display = selected ? 'flex' : 'none'; - if (selected) { - this.views.active = +id; - this.views.loaded[id].focus(); - const electronWindow = electron.remote.getCurrentWindow(), - title = - (this.state.tabs.get(+id).emoji - ? `${this.state.tabs.get(+id).emoji} ` - : '') + (this.state.tabs.get(+id).text || 'Notion Desktop'); - if (electronWindow && electronWindow.getTitle() !== title) - electronWindow.setTitle(title); - } - } - } - } - selectTab(num) { - if (num === 'ArrowLeft') { - const prev = document.querySelector('.tab.current') - .previousElementSibling; - if (prev) prev.click(); - } else if (num === 'ArrowRight') { - const next = document.querySelector('.tab.current') - .nextElementSibling; - if (next && !next.classList.contains('new')) next.click(); - } else { - num = +num; - if (num == 9) { - document - .querySelector('#tabs') - .children[ - document.querySelector('#tabs').children.length - 2 - ].click(); - } else if ( - document.querySelector('#tabs').children[num - 1] && - document.querySelector('#tabs').children.length > num - ) { - document.querySelector('#tabs').children[num - 1].click(); - } - } - } - - communicateWithView(event) { - switch (event.channel) { - case 'enhancer:set-tab-title': - if (this.state.tabs.get(+event.target.id)) { - this.setState({ - tabs: new Map( - this.state.tabs.set(+event.target.id, { - ...this.state.tabs.get(+event.target.id), - title: event.args[0], - }) - ), - }); - const electronWindow = electron.remote.getCurrentWindow(), - title = - (event.args[0].emoji ? `${event.args[0].emoji} ` : '') + - (event.args[0].text || 'Notion Desktop'); - if ( - event.target.id == this.views.current.id && - electronWindow.getTitle() !== title - ) - electronWindow.setTitle(title); - } - break; - case 'enhancer:select-tab': - this.selectTab(event.args[0]); - break; - case 'enhancer:new-tab': - this.newTab(event.args[0]); - break; - case 'enhancer:close-tab': - this.closeTab( - event.args[0] || event.args[0] === 0 - ? event.args[0] - : this.views.current.id - ); - break; - } - } - startSearch(isPeekView) { - this.setState( - { - searching: true, - searchingPeekView: isPeekView, - }, - () => { - if (document.activeElement instanceof HTMLElement) - document.activeElement.blur(); - this.$search.focus(); - notionIpc.sendIndexToSearch(this.$search, 'search:start'); - notionIpc.sendIndexToNotion(this.$search, 'search:started'); - } - ); - } - stopSearch() { - notionIpc.sendIndexToSearch(this.$search, 'search:reset'); - this.setState({ - searching: false, - }); - this.lastSearchQuery = undefined; - this.views.current - .$el() - - .stopFindInPage('clearSelection'); - notionIpc.sendIndexToNotion(this.views.current.$el(), 'search:stopped'); - } - nextSearch(query) { - this.views.current - .$el() - - .findInPage(query, { - forward: true, - findNext: query === this.lastSearchQuery, - }); - this.lastSearchQuery = query; - } - prevSearch(query) { - this.views.current - .$el() - - .findInPage(query, { - forward: false, - findNext: query === this.lastSearchQuery, - }); - this.lastSearchQuery = query; - } - clearSearch() { - this.lastSearchQuery = undefined; - this.views.current - .$el() - - .stopFindInPage('clearSelection'); - } - doneSearch() { - this.lastSearchQuery = undefined; - this.views.current - .$el() - - .stopFindInPage('clearSelection'); - this.setState({ searching: false }); - if (document.activeElement instanceof HTMLElement) { - document.activeElement.blur(); - } - this.views.current.$el().focus(); - notionIpc.sendIndexToNotion(this.views.current.$el(), 'search:stopped'); - } - focusListeners() { - if (!this.views.current.$el() || !this.$search) return; - this.views.current - .$el() - .addEventListener('ipc-message', this.communicateWithView); - notionIpc.receiveIndexFromNotion.addListener( - this.views.current.$el(), - 'search:start', - this.startSearch - ); - notionIpc.receiveIndexFromNotion.addListener( - this.views.current.$el(), - 'search:stop', - this.stopSearch - ); - notionIpc.receiveIndexFromSearch.addListener( - this.$search, - 'search:next', - this.nextSearch - ); - notionIpc.receiveIndexFromSearch.addListener( - this.$search, - 'search:prev', - this.prevSearch - ); - notionIpc.receiveIndexFromSearch.addListener( - this.$search, - 'search:clear', - this.clearSearch - ); - notionIpc.receiveIndexFromSearch.addListener( - this.$search, - 'search:stop', - this.doneSearch - ); - } - blurListeners() { - if (!this.views.current.$el() || !this.$search) return; - if (this.state.searching) this.stopSearch(); - this.views.current - .$el() - .removeEventListener('ipc-message', this.communicateWithView); - notionIpc.receiveIndexFromNotion.removeListener( - this.views.current.$el(), - 'search:start', - this.startSearch - ); - notionIpc.receiveIndexFromNotion.removeListener( - this.views.current.$el(), - 'search:stop', - this.stopSearch - ); - notionIpc.receiveIndexFromSearch.removeListener( - this.$search, - 'search:next', - this.nextSearch - ); - notionIpc.receiveIndexFromSearch.removeListener( - this.$search, - 'search:prev', - this.prevSearch - ); - notionIpc.receiveIndexFromSearch.removeListener( - this.$search, - 'search:clear', - this.clearSearch - ); - notionIpc.receiveIndexFromSearch.removeListener( - this.$search, - 'search:stop', - this.doneSearch - ); - } - loadListeners() { - if (!this.$search) return; - Object.entries(this.views.html) - .filter(([id, $notion]) => !this.views.loaded[id] && $notion) - .forEach(([id, $notion]) => { - if (!$notion) return; - this.views.loaded[id] = $notion; - $notion.addEventListener('did-fail-load', (error) => { - // logger.info('Failed to load:', error); - if ( - error.errorCode === -3 || - !error.validatedURL.startsWith( - schemeHelpers.getSchemeUrl({ - httpUrl: config.default.baseURL, - protocol: config.default.protocol, - }) - ) - ) { - return; - } - this.setState({ error: true }); - }); - $notion.addEventListener('dom-ready', () => { - // $notion.executeJavaScript(insertCSP); - electron.remote.webContents - .fromId($notion.getWebContentsId()) - .addListener('found-in-page', (event, result) => { - const matches = result - ? { - count: result.matches, - index: result.activeMatchOrdinal, - } - : { count: 0, index: 0 }; - notionIpc.sendIndexToSearch( - this.$search, - 'search:result', - matches - ); - }); - notionIpc.proxyAllMainToNotion($notion); - }); - notionIpc.receiveIndexFromNotion.addListener( - $notion, - 'search:set-theme', - (theme) => { - notionIpc.sendIndexToSearch( - this.$search, - 'search:set-theme', - theme - ); - } - ); - notionIpc.receiveIndexFromNotion.addListener( - $notion, - 'zoom', - (zoomFactor) => { - $notion.setZoomFactor(zoomFactor); - this.$search.setZoomFactor(zoomFactor); - this.setState({ zoomFactor }); - } - ); - let electronWindow; - try { - electronWindow = electron.remote.getCurrentWindow(); - } catch (error) { - notionIpc.sendToMain('notion:log-error', { - level: 'error', - from: 'index', - type: 'GetCurrentWindowError', - error: error.message, - }); - } - if (!electronWindow) { - this.setState({ error: true }); - this.handleReload(); - return; - } - const sendFullScreenChangeEvent = () => { - notionIpc.sendIndexToNotion( - $notion, - 'notion:full-screen-changed' - ); - }; - electronWindow.addListener( - 'enter-full-screen', - sendFullScreenChangeEvent - ); - electronWindow.addListener( - 'leave-full-screen', - sendFullScreenChangeEvent - ); - electronWindow.addListener( - 'enter-html-full-screen', - sendFullScreenChangeEvent - ); - electronWindow.addListener( - 'leave-html-full-screen', - sendFullScreenChangeEvent - ); - }); - } - - renderTitlebar() { - return React.createElement( - 'header', - { - id: 'titlebar', - ref: ($titlebar) => { - this.$titlebar = $titlebar; - }, - onClick: (e) => { - this.views.current.$el().focus(); - }, - }, - React.createElement('button', { - id: 'open-enhancer-menu', - onClick: (e) => { - electron.ipcRenderer.send('enhancer:open-menu'); - }, - }), - React.createElement( - 'div', - { id: 'tabs' }, - ...[...this.state.tabs] - .filter( - ([id, { title, open }]) => open || this.state.slideOut.has(id) - ) - .map(([id, { title, open }]) => - React.createElement( - 'button', - { - className: - 'tab' + - (id === this.views.current.id ? ' current' : '') + - (this.state.slideIn.has(id) ? ' slideIn' : '') + - (this.state.slideOut.has(id) ? ' slideOut' : ''), - draggable: true, - onClick: (e) => { - if (!e.target.classList.contains('close')) - this.openTab(id); - }, - onMouseUp: (e) => { - if (window.event.which === 2) this.closeTab(id); - }, - ref: ($tab) => { - this.views.tabs[id] = $tab; - }, - }, - React.createElement('span', { - dangerouslySetInnerHTML: { - __html: (title.img || '') + (title.text || 'notion.so'), - }, - }), - React.createElement( - 'span', - { - className: 'close', - onClick: () => { - this.closeTab(id); - }, - }, - '×' - ) - ) - ), - React.createElement( - 'button', - { - className: 'tab new', - onClick: () => { - this.newTab(); - }, - }, - React.createElement('span', {}, '+') - ) - ) - ); - } - renderNotionContainer() { - this.views.react = Object.fromEntries( - [...this.state.tabs].map(([id, { title, open }]) => { - return [ - id, - this.views.react[id] || - React.createElement('webview', { - className: 'notion', - id, - ref: ($notion) => { - this.views.html[id] = $notion; - this.focusTab(); - }, - partition: constants.electronSessionPartition, - preload: path.resolve(`${__notion}/app/renderer/preload.js`), - src: this.props.notionUrl, - webpreferences: 'spellcheck=yes, enableremotemodule=yes', - }), - ]; - }) - ); - return React.createElement( - 'div', - { - style: { - flexGrow: 1, - display: this.state.error ? 'none' : 'flex', - }, - }, - ...Object.values(this.views.react) - ); - } - renderSearchContainer() { - return React.createElement( - 'div', - { - style: { - position: 'fixed', - overflow: 'hidden', - pointerEvents: 'none', - padding: '0 20px', - top: - (this.state.searchingPeekView - ? 0 - : process.platform === 'darwin' - ? 37 - : 45) * this.state.zoomFactor, - right: (48 - 24) * this.state.zoomFactor, - width: 460 * this.state.zoomFactor, - height: 72 * this.state.zoomFactor, - zIndex: 99, - }, - }, - React.createElement('webview', { - id: 'search', - style: { - width: '100%', - height: '100%', - transition: `transform 70ms ease-${ - this.state.searching ? 'out' : 'in' - }`, - transform: `translateY(${this.state.searching ? '0' : '-100'}%)`, - pointerEvents: this.state.searching ? 'auto' : 'none', - }, - ref: ($search) => { - this.$search = $search; - this.focusTab(); - }, - partition: constants.electronSessionPartition, - preload: `file://${path.resolve( - `${__notion}/app/renderer/search.js` - )}`, - src: `file://${path.resolve( - `${__notion}/app/renderer/search.html` - )}`, - webpreferences: 'spellcheck=no, enableremotemodule=yes', - }) - ); - } - renderErrorContainer() { - return React.createElement( - 'div', - { - style: { - position: 'fixed', - top: 0, - left: 0, - right: 0, - bottom: 0, - display: this.state.error ? 'flex' : 'none', - flexDirection: 'column', - alignItems: 'center', - justifyContent: 'center', - padding: 24, - paddingBottom: '8vh', - }, - }, - React.createElement('img', { - style: { - width: 300, - maxWidth: '100%', - }, - src: './onboarding-offline.png', - }), - React.createElement( - 'div', - { - style: { - paddingTop: 16, - paddingBottom: 16, - textAlign: 'center', - lineHeight: 1.4, - fontSize: 17, - letterSpacing: '-0.01em', - color: '#424241', - fontWeight: 500, - }, - }, - React.createElement( - 'div', - null, - React.createElement(notion_intl.FormattedMessage, { - id: 'desktopLogin.offline.title', - defaultMessage: 'Welcome to Notion!', - values: { - strong: (...chunks) => - React.createElement('strong', null, chunks), - }, - }) - ), - React.createElement( - 'div', - null, - React.createElement(notion_intl.FormattedMessage, { - id: 'desktopLogin.offline.message', - defaultMessage: 'Connect to the internet to get started.', - }) - ) - ), - React.createElement( - 'div', - null, - React.createElement( - 'button', - { - style: { - background: '#fefaf8', - border: '1px solid #f1cbca', - boxSizing: 'border-box', - boxShadow: '0px 1px 2px rgba(0, 0, 0, 0.1)', - borderRadius: 3, - lineHeight: 'normal', - fontSize: 14, - fontWeight: 600, - letterSpacing: '-0.03em', - color: '#d8615c', - paddingLeft: 12, - paddingRight: 12, - height: 36, - }, - onClick: this.handleReload, - }, - React.createElement(notion_intl.FormattedMessage, { - id: - 'desktopLogin.offline.retryConnectingToInternetButton.label', - defaultMessage: 'Try again', - }) - ) - ) - ); - } - render() { - const notionLocale = localizationHelper.getNotionLocaleFromElectronLocale( - window.navigator.language - ), - result = React.createElement( - notion_intl.IntlProvider, - { - locale: notionLocale, - messages: - notionLocale === 'ko-KR' - ? koMessages - : { - 'desktopLogin.offline.title': - 'Welcome to Notion!', - 'desktopLogin.offline.message': - 'Connect to the internet to get started.', - 'desktopLogin.offline.retryConnectingToInternetButton.label': - 'Try again', - }, - }, - this.renderTitlebar(), - this.renderNotionContainer(), - this.renderSearchContainer(), - this.renderErrorContainer() - ); - document.body.classList[this.state.error ? 'add' : 'remove']('error'); - this.loadListeners(); - return result; - } - } - - window['__start'] = () => { - document.body.className = 'notion-dark-theme'; - document.body.setAttribute('data-platform', process.platform); - - const modules = getEnhancements(); - for (let mod of modules.loaded) { - for (let font of mod.fonts || []) { - document - .querySelector('head') - .appendChild( - createElement(``) - ); - } - } - - for (let mod of modules.loaded) { - if ( - mod.alwaysActive || - store('mods', { [mod.id]: { enabled: false } })[mod.id].enabled - ) { - const fileExists = (file) => fs.pathExistsSync(path.resolve(file)); - for (let sheet of ['tabs', 'variables']) { - if (fileExists(`${__dirname}/../${mod.dir}/${sheet}.css`)) { - document.head.appendChild( - createElement( - `` - ) - ); - } - } - } - } - electron.ipcRenderer.on('enhancer:set-app-theme', (event, theme) => { - document.body.className = `notion-${theme}-theme`; - }); - - const parsed = url.parse(window.location.href, true), - notionUrl = - parsed.query.path || - (store().default_page - ? idToNotionURL(store().default_page) - : schemeHelpers.getSchemeUrl({ - httpUrl: config.default.baseURL, - protocol: config.default.protocol, - })); - delete parsed.search; - delete parsed.query; - const plainUrl = url.format(parsed); - window.history.replaceState(undefined, undefined, plainUrl); - - document.title = localizationHelper - .createIntlShape( - localizationHelper.getNotionLocaleFromElectronLocale( - window.navigator.language - ) - ) - .formatMessage( - notion_intl.defineMessages({ - documentTitle: { - id: 'desktop.documentTitle', - defaultMessage: 'Notion Desktop', - }, - }).documentTitle - ); - const $root = document.getElementById('root'); - ReactDOM.render( - React.createElement(Index, { notionUrl: notionUrl }), - $root - ); - }; - } else { - const __start = window['__start']; - window['__start'] = () => { - __start(); - - if (store().default_page) { - new Promise((res, rej) => { - let attempt; - attempt = setInterval(() => { - if ( - !document.getElementById('notion') || - !document.getElementById('notion').loadURL - ) - return; - clearInterval(attempt); - res(); - }, 50); - }).then(() => { - if ( - document.getElementById('notion').getAttribute('src') === - 'notion://www.notion.so' && - idToNotionURL(store().default_page) - ) { - document - .getElementById('notion') - .loadURL(idToNotionURL(store().default_page)); - } - }); - } - - const dragarea = document.querySelector( - '#root [style*="-webkit-app-region: drag"]' - ), - default_styles = dragarea.getAttribute('style'); - if (store().tiling_mode) { - dragarea.style.display = 'none'; - } else { - document - .getElementById('notion') - .addEventListener('ipc-message', (event) => { - if (event.channel !== 'enhancer:sidebar-width') return; - dragarea.setAttribute( - 'style', - `${default_styles} top: 2px; height: ${ - store('cf8a7b27-5a4c-4d45-a4cb-1d2bbc9e9014').dragarea_height - }px; left: ${event.args[0]};` - ); - }); - - document.getElementById('notion').addEventListener('dom-ready', () => { - // document.getElementById('notion').executeJavaScript(insertCSP); - }); - } - }; - } -}; diff --git a/temp/core/systemMenu.js b/temp/core/systemMenu.js deleted file mode 100644 index 2fb0535..0000000 --- a/temp/core/systemMenu.js +++ /dev/null @@ -1,477 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -'use strict'; - -module.exports = (store, __exports) => { - const electron = require('electron'), - fs = require('fs-extra'), - { getNotionResources } = require('../../pkg/helpers.js'), - __notion = getNotionResources(), - createWindow = require(`${__notion}/app/main/createWindow.js`), - config = require(`${__notion}/app/config.js`), - notion_intl = require(`${__notion}/app/shared/notion-intl/index.js`), - localizationHelper = require(`${__notion}/app/helpers/localizationHelper.js`), - isMac = process.platform === 'darwin', - // why is it inversed? i have no idea, but for some reason this is what works - tabsEnabled = !(store('mods')['e1692c29-475e-437b-b7ff-3eee872e1a42'] || {}) - .enabled, - menuMessages = notion_intl.defineMessages({ - fileMenuTitle: { - id: 'desktopTopbar.fileMenu.title', - defaultMessage: 'File', - }, - editMenuTitle: { - id: 'desktopTopbar.editMenu.title', - defaultMessage: 'Edit', - }, - viewMenuTitle: { - id: 'desktopTopbar.viewMenu.title', - defaultMessage: 'View', - }, - windowMenuTitle: { - id: 'desktopTopbar.windowMenu.title', - defaultMessage: 'Window', - }, - helpTitle: { - id: 'desktopTopbar.helpMenu.title', - defaultMessage: 'Help', - }, - newWindow: { - id: 'desktopTopbar.fileMenu.newWindow', - defaultMessage: 'New Window', - }, - closeWindow: { - id: 'desktopTopbar.fileMenu.close', - defaultMessage: 'Close Window', - }, - quit: { - id: 'desktopTopbar.fileMenu.quit', - defaultMessage: 'Exit', - }, - undo: { - id: 'desktopTopbar.editMenu.undo', - defaultMessage: 'Undo', - }, - redo: { - id: 'desktopTopbar.editMenu.redo', - defaultMessage: 'Redo', - }, - cut: { - id: 'desktopTopbar.editMenu.cut', - defaultMessage: 'Cut', - }, - copy: { - id: 'desktopTopbar.editMenu.copy', - defaultMessage: 'Copy', - }, - paste: { - id: 'desktopTopbar.editMenu.paste', - defaultMessage: 'Paste', - }, - selectAll: { - id: 'desktopTopbar.editMenu.selectAll', - defaultMessage: 'Select All', - }, - startSpeaking: { - id: 'desktopTopbar.editMenu.speech.startSpeaking', - defaultMessage: 'Start Speaking', - }, - stopSpeaking: { - id: 'desktopTopbar.editMenu.speech.stopSpeaking', - defaultMessage: 'Stop Speaking', - }, - speech: { - id: 'desktopTopbar.editMenu.speech', - defaultMessage: 'Speech', - }, - reload: { - id: 'desktopTopbar.viewMenu.reload', - defaultMessage: 'Reload', - }, - togglefullscreen: { - id: 'desktopTopbar.viewMenu.togglefullscreen', - defaultMessage: 'Toggle Full Screen', - }, - toggleDevTools: { - id: 'desktopTopbar.toggleDevTools', - defaultMessage: 'Toggle Developer Tools', - }, - toggleWindowDevTools: { - id: 'desktopTopbar.toggleWindowDevTools', - defaultMessage: 'Toggle Window Developer Tools', - }, - maximize: { - id: 'desktopTopbar.windowMenu.maximize', - defaultMessage: 'Maximize', - }, - minimize: { - id: 'desktopTopbar.windowMenu.minimize', - defaultMessage: 'Minimize', - }, - zoom: { - id: 'desktopTopbar.windowMenu.zoom', - defaultMessage: 'Zoom', - }, - front: { - id: 'desktopTopbar.windowMenu.front', - defaultMessage: 'Front', - }, - close: { - id: 'desktopTopbar.windowMenu.close', - defaultMessage: 'Close', - }, - help: { - id: 'desktopTopbar.helpMenu.openHelpAndSupport', - defaultMessage: 'Open Help & Support', - }, - reset: { - id: 'desktopTopbar.appMenu.resetAppAndClearData', - defaultMessage: 'Reset App & Clear Local Data', - }, - about: { - id: 'desktopTopbar.appMenu.about', - defaultMessage: 'About Notion', - }, - services: { - id: 'desktopTopbar.appMenu.services', - defaultMessage: 'Services', - }, - hide: { id: 'desktopTopbar.appMenu.hide', defaultMessage: 'Hide Notion' }, - hideOthers: { - id: 'desktopTopbar.appMenu.hideOthers', - defaultMessage: 'Hide Others', - }, - unhide: { - id: 'desktopTopbar.appMenu.unhide', - defaultMessage: 'Show All', - }, - quitMac: { id: 'desktopTopbar.appMenu.quit', defaultMessage: 'Quit' }, - }), - escapeAmpersand = (message) => message.replace(/&/g, '&&'); - __exports.setupSystemMenu = (locale) => { - const intl = localizationHelper.createIntlShape(locale), - fileMenu = { - role: 'fileMenu', - label: escapeAmpersand(intl.formatMessage(menuMessages.fileMenuTitle)), - submenu: isMac - ? [ - { - label: escapeAmpersand( - intl.formatMessage(menuMessages.newWindow) - ), - accelerator: 'CmdOrCtrl+Shift+N', - click: () => createWindow.createWindow(), - }, - ...(tabsEnabled - ? [ - { - role: 'close', - label: escapeAmpersand( - intl.formatMessage(menuMessages.closeWindow) - ), - }, - ] - : []), - ] - : [ - { - label: escapeAmpersand( - intl.formatMessage(menuMessages.newWindow) - ), - accelerator: 'CmdOrCtrl+Shift+N', - click: () => createWindow.createWindow(), - }, - ...(tabsEnabled - ? [ - { - role: 'quit', - label: escapeAmpersand( - intl.formatMessage(menuMessages.quit) - ), - }, - ] - : []), - ], - }, - editMenu = { - role: 'editMenu', - label: escapeAmpersand(intl.formatMessage(menuMessages.editMenuTitle)), - submenu: isMac - ? [ - { - role: 'undo', - label: escapeAmpersand(intl.formatMessage(menuMessages.undo)), - }, - { - role: 'redo', - label: escapeAmpersand(intl.formatMessage(menuMessages.redo)), - }, - { type: 'separator' }, - { - role: 'cut', - label: escapeAmpersand(intl.formatMessage(menuMessages.cut)), - }, - { - role: 'copy', - label: escapeAmpersand(intl.formatMessage(menuMessages.copy)), - }, - { - role: 'paste', - label: escapeAmpersand(intl.formatMessage(menuMessages.paste)), - }, - { - role: 'selectAll', - label: escapeAmpersand( - intl.formatMessage(menuMessages.selectAll) - ), - }, - { type: 'separator' }, - { - label: escapeAmpersand(intl.formatMessage(menuMessages.speech)), - submenu: [ - { - role: 'startSpeaking', - label: escapeAmpersand( - intl.formatMessage(menuMessages.startSpeaking) - ), - }, - { - role: 'stopSpeaking', - label: escapeAmpersand( - intl.formatMessage(menuMessages.stopSpeaking) - ), - }, - ], - }, - ] - : [ - { - role: 'undo', - label: escapeAmpersand(intl.formatMessage(menuMessages.undo)), - }, - { - role: 'redo', - label: escapeAmpersand(intl.formatMessage(menuMessages.redo)), - }, - { type: 'separator' }, - { - role: 'cut', - label: escapeAmpersand(intl.formatMessage(menuMessages.cut)), - }, - { - role: 'copy', - label: escapeAmpersand(intl.formatMessage(menuMessages.copy)), - }, - { - role: 'paste', - label: escapeAmpersand(intl.formatMessage(menuMessages.paste)), - }, - { type: 'separator' }, - { - role: 'selectAll', - label: escapeAmpersand( - intl.formatMessage(menuMessages.selectAll) - ), - }, - ], - }, - viewMenu = { - role: 'viewMenu', - label: escapeAmpersand(intl.formatMessage(menuMessages.viewMenuTitle)), - submenu: [ - { - label: escapeAmpersand(intl.formatMessage(menuMessages.reload)), - accelerator: 'CmdOrCtrl+R', - click() { - const focusedWebContents = electron.webContents.getFocusedWebContents(); - if (focusedWebContents) { - if (focusedWebContents.hostWebContents) { - for (const webContentsInstance of electron.webContents.getAllWebContents()) { - if ( - webContentsInstance.hostWebContents === - focusedWebContents.hostWebContents - ) { - webContentsInstance.reload(); - } - } - } else { - focusedWebContents.reload(); - } - } - }, - }, - { - label: escapeAmpersand( - intl.formatMessage(menuMessages.toggleDevTools) - ), - accelerator: isMac ? 'Alt+Command+I' : 'Ctrl+Shift+I', - click() { - let focusedWebContents = electron.webContents.getFocusedWebContents(); - if (focusedWebContents) { - const focusedWebContentsUrl = focusedWebContents.getURL(); - if ( - focusedWebContentsUrl.startsWith('file://') && - focusedWebContentsUrl.endsWith('/search.html') - ) { - const notionWebviewWebContents = electron.webContents - .getAllWebContents() - .find( - (webContentsInstance) => - webContentsInstance.hostWebContents === - focusedWebContents.hostWebContents && - webContentsInstance !== focusedWebContents - ); - if (notionWebviewWebContents) { - focusedWebContents = notionWebviewWebContents; - } - } - focusedWebContents.toggleDevTools(); - } - }, - }, - { - label: escapeAmpersand( - intl.formatMessage(menuMessages.toggleWindowDevTools) - ), - accelerator: isMac ? 'Shift+Alt+Command+I' : 'Alt+Ctrl+Shift+I', - visible: false, - click(menuItem, focusedWindow) { - if (focusedWindow) { - focusedWindow.webContents.toggleDevTools(); - } - }, - }, - { type: 'separator' }, - { - role: 'togglefullscreen', - label: escapeAmpersand( - intl.formatMessage(menuMessages.togglefullscreen) - ), - }, - ], - }, - windowMenu = { - role: 'windowMenu', - label: escapeAmpersand( - intl.formatMessage(menuMessages.windowMenuTitle) - ), - submenu: isMac - ? [ - { - role: 'minimize', - label: escapeAmpersand( - intl.formatMessage(menuMessages.minimize) - ), - }, - { - role: 'zoom', - label: escapeAmpersand(intl.formatMessage(menuMessages.zoom)), - }, - { type: 'separator' }, - { - role: 'front', - label: escapeAmpersand(intl.formatMessage(menuMessages.front)), - }, - ] - : [ - { - role: 'minimize', - label: escapeAmpersand( - intl.formatMessage(menuMessages.minimize) - ), - }, - { - label: escapeAmpersand( - intl.formatMessage(menuMessages.maximize) - ), - click(item, focusedWindow) { - if (focusedWindow) { - if (focusedWindow.isMaximized()) { - focusedWindow.unmaximize(); - } else { - focusedWindow.maximize(); - } - } - }, - }, - ...(tabsEnabled - ? [ - { - role: 'close', - label: escapeAmpersand( - intl.formatMessage(menuMessages.close) - ), - }, - ] - : []), - ], - }, - helpMenu = { - role: 'help', - label: escapeAmpersand(intl.formatMessage(menuMessages.helpTitle)), - submenu: [ - { - label: escapeAmpersand(intl.formatMessage(menuMessages.help)), - click() { - electron.shell.openExternal(config.default.baseURL + '/help'); - }, - }, - ], - }, - appMenu = { - role: 'appMenu', - submenu: [ - { - role: 'about', - label: escapeAmpersand(intl.formatMessage(menuMessages.about)), - }, - { type: 'separator' }, - { - label: escapeAmpersand(intl.formatMessage(menuMessages.reset)), - async click(item, focusedWindow) { - await fs.remove(electron.app.getPath('userData')); - electron.app.relaunch(); - electron.app.exit(); - }, - }, - { type: 'separator' }, - { - role: 'services', - label: escapeAmpersand(intl.formatMessage(menuMessages.services)), - }, - { type: 'separator' }, - { - role: 'hide', - label: escapeAmpersand(intl.formatMessage(menuMessages.hide)), - }, - { - role: 'hideOthers', - label: escapeAmpersand(intl.formatMessage(menuMessages.hideOthers)), - }, - { - role: 'unhide', - label: escapeAmpersand(intl.formatMessage(menuMessages.unhide)), - }, - ...(tabsEnabled - ? [ - { type: 'separator' }, - { - role: 'quit', - label: escapeAmpersand( - intl.formatMessage(menuMessages.quitMac) - ), - }, - ] - : []), - ], - }, - template = [fileMenu, editMenu, viewMenu, windowMenu, helpMenu]; - if (isMac) template.unshift(appMenu); - const menu = electron.Menu.buildFromTemplate(template); - electron.Menu.setApplicationMenu(menu); - }; -}; diff --git a/temp/core/tabs.css b/temp/core/tabs.css deleted file mode 100644 index 41c53fb..0000000 --- a/temp/core/tabs.css +++ /dev/null @@ -1,196 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -@import './css/buttons.css'; - -* { - box-sizing: border-box; - word-break: break-word; - text-decoration: none; - text-size-adjust: 100%; - font-family: var(--theme--font_sans) !important; - outline-color: var(--theme--table-border); -} - -@keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} -@keyframes tabSlide { - from { - width: 0; - } - to { - width: 8.5em; - } -} - -body:not(.error)::after { - z-index: 1; - content: ''; - position: absolute; - left: calc(50% - 15px); - top: calc(50% + 10px); - width: 18px; - height: 18px; - opacity: 0.5; - border: 4px solid var(--theme--text); - border-top-color: transparent; - border-radius: 50%; - animation: spin 0.8s linear infinite; -} - -html, -body, -#root { - background: var(--theme--main) !important; - position: relative; - height: 100%; - margin: 0; -} -#root { - display: flex; - flex-direction: column; -} - -[data-platform='darwin'] #titlebar { - padding-left: 4em; -} -#titlebar::before { - content: ''; - position: absolute; - width: 100%; - -webkit-app-region: no-drag; - top: 0; - left: 0; - height: 2px; -} -#titlebar { - display: flex; - flex-shrink: 1; - user-select: none; - -webkit-app-region: drag; - background: var(--theme--dragarea); -} -#titlebar button { - color: var(--theme--text); - -webkit-app-region: no-drag; - border: none; - background: transparent; -} -#titlebar .window-buttons-area { - margin: 0.5em 0.55em 0.5em auto; -} -#titlebar .window-buttons-area:empty { - display: none; -} - -#open-enhancer-menu::before { - content: ''; - height: 1.25em; - width: 1.25em; - display: inline-block; - margin: auto 1em -0.25em 1em; - background-size: contain; - background-image: url('enhancement://core/icons/mac+linux.png'); - background-repeat: no-repeat; -} -#tabs { - margin-top: auto; - flex-wrap: wrap; - display: flex; - align-items: center; -} -#tabs .tab:not(.new):not(.current) { - flex: 1 1 30px; - min-width: 30px; -} -#tabs button:nth-child(16) { - display: none; - opacity: 0; -} -#tabs .tab { - display: inline-flex; - background: var(--theme--main); - border: none; - font-size: 1.15em; - padding: 0.2em 0.4em; - text-align: left; - border-bottom: 0.22em solid var(--theme--table-border); - opacity: 0.8; -} -#tabs .tab img { - object-fit: cover; - height: 1em; - width: 1em; - border-radius: 3px; - margin: 0 0.5em -0.16em 0.1em; -} -#tabs .tab:not(.new) { - margin-top: 0.5em; -} -#tabs .tab:not(.new) span:not(.close) { - width: 8.5em; - margin-right: 0.22em; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -#tabs .tab.slideIn span:not(.close) { - animation: tabSlide 100ms ease-in-out; -} -#tabs .tab.slideOut { - width: 0; - animation: tabSlide 100ms ease-in-out reverse; -} -#tabs .tab .close { - padding: 0 0.35em 0.1em 0.3em; - margin-left: auto; - font-weight: bold; -} -#tabs .tab.current { - opacity: 1; - background: var(--theme--selected); - border-bottom: 0.22em solid var(--theme--option_active-background); -} -#tabs .tab.new { - background: none; - border: none; - margin-left: -0.1em; - margin-top: 0.3em; -} -#tabs .tab.new span { - padding: 0 0.35em 0.1em 0.3em; - font-weight: bold; -} -#tabs .tab:hover { - opacity: 1; -} -#tabs .tab .close:hover, -#tabs .tab.new span:hover, -#titlebar .window-button:hover { - border-radius: 0.22em; - background: var(--theme--table-border); - box-shadow: 0 0 0 0.5px var(--theme--interactive_hover-border); -} -#titlebar .window-button.btn-close:hover { - background: var(--theme--button_close); - color: var(--theme--button_close-fill); -} -#tabs .tab.dragged-over { - box-shadow: inset 0.22em 0 0 0 var(--theme--selected); -} - -.notion { - z-index: 2; - width: 100%; - height: 100%; - display: none; -} diff --git a/temp/core/tray.js b/temp/core/tray.js deleted file mode 100644 index 53464a8..0000000 --- a/temp/core/tray.js +++ /dev/null @@ -1,261 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * under the MIT license - */ - -'use strict'; - -let tray, enhancer_menu; - -module.exports = (store, __exports) => { - const electron = require('electron'), - path = require('path'), - is_mac = process.platform === 'darwin', - is_win = process.platform === 'win32', - helpers = require('../../pkg/helpers.js'), - getAllWindows = electron.BrowserWindow.getAllWindows; - - function newWindow() { - require('./createWindow.js')( - store, - require(path.resolve( - `${helpers.getNotionResources()}/app/main/createWindow.js` - )) - )( - '', - getAllWindows().find((win) => win !== enhancer_menu) - ); - } - - electron.app.on('second-instance', (event, args, workingDirectory) => { - const windows = getAllWindows(); - if (windows.some((win) => win.isVisible())) { - newWindow(); - } else { - windows.forEach((window) => { - window.show(); - window.focus(); - if (store().maximized) window.maximize(); - }); - } - }); - - electron.app.once('ready', () => { - // tray - - tray = new electron.Tray( - is_win - ? path.resolve(`${__dirname}/icons/windows.ico`) - : new electron.nativeImage.createFromPath( - path.resolve(`${__dirname}/icons/mac+linux.png`) - ).resize({ - width: 16, - height: 16, - }) - ); - - // menu - - electron.ipcMain.on('enhancer:open-menu', openEnhancerMenu); - electron.ipcMain.on('enhancer:set-app-theme', (event, arg) => { - electron.webContents - .getAllWebContents() - .forEach((webContents) => - webContents.send('enhancer:set-app-theme', arg) - ); - }); - electron.ipcMain.on('enhancer:get-app-theme', (event, arg) => { - electron.webContents - .getAllWebContents() - .forEach((webContents) => - webContents.send('enhancer:get-app-theme', arg) - ); - }); - electron.ipcMain.on('enhancer:close-tab', (event, target, tab) => { - electron.webContents - .fromId(target) - .webContents.send('enhancer:close-tab', tab); - }); - - function calculateWindowPos(width, height) { - const screen = electron.screen.getDisplayNearestPoint({ - x: tray.getBounds().x, - y: tray.getBounds().y, - }); - // left - if (screen.workArea.x > 0) - return { - x: screen.workArea.x, - y: screen.workArea.height - height, - }; - // top - if (screen.workArea.y > 0) - return { - x: Math.round( - tray.getBounds().x + tray.getBounds().width / 2 - width / 2 - ), - y: screen.workArea.y, - }; - // right - if (screen.workArea.width < screen.bounds.width) - return { - x: screen.workArea.width - width, - y: screen.bounds.height - height, - }; - // bottom - return { - x: Math.round( - tray.getBounds().x + tray.getBounds().width / 2 - width / 2 - ), - y: screen.workArea.height - height, - }; - } - - function openEnhancerMenu() { - if (enhancer_menu) return enhancer_menu.show(); - const window_state = require(`${helpers - .getNotionResources() - .replace(/\\/g, '/')}/app/node_modules/electron-window-state/index.js`)( - { - file: 'menu.windowstate.json', - path: helpers.__data, - defaultWidth: 275, - defaultHeight: 600, - } - ); - enhancer_menu = new electron.BrowserWindow({ - show: true, - frame: !store().frameless, - titleBarStyle: 'hiddenInset', - x: - window_state.x || - calculateWindowPos(window_state.width, window_state.height).x, - y: - window_state.y || - calculateWindowPos(window_state.width, window_state.height).y, - width: window_state.width, - height: window_state.height, - webPreferences: { - preload: path.resolve(`${__dirname}/enhancerMenu.js`), - nodeIntegration: true, - session: electron.session.fromPartition('persist:notion'), - enableRemoteModule: true, - }, - }); - enhancer_menu.loadURL('enhancement://core/menu.html'); - enhancer_menu.on('close', (e) => { - window_state.saveState(enhancer_menu); - enhancer_menu = null; - }); - // enhancer_menu.webContents.openDevTools(); - } - - // tray - - const contextMenu = electron.Menu.buildFromTemplate([ - { - type: 'normal', - label: 'GitHub', - click: () => { - electron.shell.openExternal( - 'https://github.com/notion-enhancer/notion-enhancer/blob/master/DOCUMENTATION.md' - ); - }, - }, - { - type: 'normal', - label: 'Discord', - click: () => { - electron.shell.openExternal('https://discord.gg/sFWPXtA'); - }, - }, - { - type: 'separator', - }, - { - type: 'normal', - label: 'Bug Report', - click: () => { - electron.shell.openExternal( - 'https://github.com/notion-enhancer/notion-enhancer/issues/new?labels=bug&template=bug-report.md' - ); - }, - }, - { - type: 'normal', - label: 'Feature Proposal', - click: () => { - electron.shell.openExternal( - 'https://github.com/notion-enhancer/notion-enhancer/issues/new?labels=enhancement&template=feature-proposal.md' - ); - }, - }, - { - type: 'separator', - }, - { - type: 'normal', - label: 'Enhancements', - accelerator: store().menu_toggle, - click: openEnhancerMenu, - }, - { - type: 'normal', - label: 'New Window', - click: newWindow(), - accelerator: 'CommandOrControl+Shift+N', - }, - { - type: 'normal', - label: 'Toggle Visibility', - accelerator: store().hotkey, - click: toggleWindows, - }, - { - type: 'separator', - }, - { - label: 'Relaunch', - click: () => { - electron.app.relaunch(); - electron.app.quit(); - }, - }, - { - label: 'Quit', - role: 'quit', - }, - ]); - tray.setContextMenu(contextMenu); - tray.setToolTip('Notion'); - - // hotkey - - function showWindows(windows) { - if (is_mac) electron.app.show(); - if (store().maximized) windows.forEach((win) => [win.maximize()]); - else windows.forEach((win) => win.show()); - electron.app.focus({ steal: true }); - } - function hideWindows(windows) { - windows.forEach((win) => [win.isFocused() && win.blur(), win.hide()]); - if (is_mac) electron.app.hide(); - } - function toggleWindows() { - const windows = getAllWindows(); - if (windows.some((win) => win.isVisible())) hideWindows(windows); - else showWindows(windows); - } - tray.on('click', toggleWindows); - if (store().hotkey) { - electron.globalShortcut.register(store().hotkey, () => { - const windows = getAllWindows(); - if (windows.some((win) => win.isFocused() && win.isVisible())) - hideWindows(windows); - else showWindows(windows); - }); - } - }); -}; diff --git a/temp/core/variables.css b/temp/core/variables.css deleted file mode 100644 index 63d2f9d..0000000 --- a/temp/core/variables.css +++ /dev/null @@ -1,810 +0,0 @@ -/* - * notion-enhancer - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 TarasokUA - * (c) 2020 Arecsu - * (c) 2020 u/zenith_illinois - * (c) 2020 admiraldus (https://github.com/admiraldus) - * under the MIT license - */ - -:root { - /** dark **/ - - --theme_dark--main: rgb(47, 52, 55); - --theme_dark--sidebar: rgb(55, 60, 63); - --theme_dark--overlay: rgba(15, 15, 15, 0.6); - --theme_dark--dragarea: #272d2f; - --theme_dark--box-shadow: rgba(15, 15, 15, 0.2) 0px 0px 0px 1px, - rgba(15, 15, 15, 0.2) 0px 2px 4px; - --theme_dark--box-shadow_strong: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px, - rgba(15, 15, 15, 0.2) 0px 3px 6px, rgba(15, 15, 15, 0.4) 0px 9px 24px; - --theme_dark--page_normal-width: 900px; - --theme_dark--page_full-width: 100%; - --theme_dark--page-padding: calc(96px + env(safe-area-inset-left)); - --theme_dark--page_banner-height: 30vh; - --theme_dark--preview-width: 977px; - --theme_dark--preview-padding: 8rem; - --theme_dark--preview_banner-height: 20vh; - - --theme_dark--font_sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', - Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji', - 'Segoe UI Symbol'; - --theme_dark--font_serif: Lyon-Text, Georgia, YuMincho, 'Yu Mincho', - 'Hiragino Mincho ProN', 'Hiragino Mincho Pro', 'Songti TC', 'Songti SC', - SimSun, 'Nanum Myeongjo', NanumMyeongjo, Batang, serif; - --theme_dark--font_mono: iawriter-mono, Nitti, Menlo, Courier, monospace; - --theme_dark--font_code: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, - Courier, monospace; - --theme_dark--font_quote: var(--theme_dark--font_sans); - --theme_dark--font_headings: var(--theme_dark--font_sans); - - --theme_dark--font_title-size: 40px; - --theme_dark--font_heading1-size: 1.875em; - --theme_dark--font_heading2-size: 1.5em; - --theme_dark--font_heading3-size: 1.25em; - --theme_dark--font_label-size: 14px; - --theme_dark--font_body-size: 16px; - --theme_dark--font_body-size_small: 14px; - --theme_dark--font_code-size: 0.796875em; - --theme_dark--font_sidebar-size: 14px; - - --theme_dark--text-block_line-height: 1.5; - --theme_dark--text-block_margin-top: 1px; - - --theme_dark--scrollbar: #505457; - --theme_dark--scrollbar-border: transparent; - --theme_dark--scrollbar_hover: #696d6f; - - --theme_dark--card: rgb(63, 68, 71); - --theme_dark--gallery: rgba(255, 255, 255, 0.05); - --theme_dark--select_input: rgb(55, 60, 63); - --theme_dark--table-border: rgba(255, 255, 255, 0.1); - --theme_dark--table-border_row: rgb(77, 81, 83); - --theme_dark--table-border_column: rgb(63, 66, 69); - --theme_dark--table-border_selected: rgba(46, 170, 220, 0.6); - --theme_dark--ui-border: rgba(255, 255, 255, 0.07); - --theme_dark--interactive_hover: rgb(71, 76, 80); - --theme_dark--interactive_hover-border: transparent; - --theme_dark--button_close: #e81123; - --theme_dark--button_close-fill: white; - - --theme_dark--selected: rgba(46, 170, 220, 0.2); - --theme_dark--primary: rgb(46, 170, 220); - --theme_dark--primary_text: white; - --theme_dark--primary_hover: rgb(6, 156, 205); - --theme_dark--primary_click: rgb(0, 141, 190); - --theme_dark--primary_indicator: rgb(235, 87, 87); - --theme_dark--primary_indicator_text: var(--theme_dark--primary_text); - --theme_dark--primary_indicator_hover: rgba(45, 156, 219, 0.2); - - --theme_dark--option-color: white; - --theme_dark--option-background: transparent; - --theme_dark--option_active-color: white; - --theme_dark--option_active-background: var(--theme_dark--primary); - --theme_dark--option_hover-color: white; - --theme_dark--option_hover-background: rgb(71, 76, 80); - - --theme_dark--danger_text: rgb(235, 87, 87); - --theme_dark--danger_border: rgba(235, 87, 87, 0.5); - - --theme_dark--divider: var(--theme_dark--table-border); - - --theme_dark--text: rgba(255, 255, 255, 0.9); - --theme_dark--text_ui: rgba(255, 255, 255, 0.6); - --theme_dark--text_ui_info: rgba(255, 255, 255, 0.4); - - --theme_dark--text_gray: rgba(151, 154, 155, 0.95); - --theme_dark--text_brown: rgb(147, 114, 100); - --theme_dark--text_orange: rgb(255, 163, 68); - --theme_dark--text_yellow: rgb(255, 220, 73); - --theme_dark--text_green: rgb(77, 171, 154); - --theme_dark--text_blue: rgb(82, 156, 202); - --theme_dark--text_purple: rgb(154, 109, 215); - --theme_dark--text_pink: rgb(226, 85, 161); - --theme_dark--text_red: rgb(255, 115, 105); - - --theme_dark--bg-text: var(--theme_dark--text); - --theme_dark--bg_gray: rgb(69, 75, 78); - --theme_dark--bg_gray-text: var(--theme_dark--bg-text); - --theme_dark--bg_brown: rgb(67, 64, 64); - --theme_dark--bg_brown-text: var(--theme_dark--bg-text); - --theme_dark--bg_orange: rgb(89, 74, 58); - --theme_dark--bg_orange-text: var(--theme_dark--bg-text); - --theme_dark--bg_yellow: rgb(89, 86, 59); - --theme_dark--bg_yellow-text: var(--theme_dark--bg-text); - --theme_dark--bg_green: rgb(53, 76, 75); - --theme_dark--bg_green-text: var(--theme_dark--bg-text); - --theme_dark--bg_blue: rgb(54, 73, 84); - --theme_dark--bg_blue-text: var(--theme_dark--bg-text); - --theme_dark--bg_purple: rgb(68, 63, 87); - --theme_dark--bg_purple-text: var(--theme_dark--bg-text); - --theme_dark--bg_pink: rgb(83, 59, 76); - --theme_dark--bg_pink-text: var(--theme_dark--bg-text); - --theme_dark--bg_red: rgb(89, 65, 65); - --theme_dark--bg_red-text: var(--theme_dark--bg-text); - - --theme_dark--line-text: var(--theme_dark--text); - --theme_dark--line_gray: rgb(69, 75, 78); - --theme_dark--line_gray-text: var(--theme_dark--line-text); - --theme_dark--line_brown: rgb(67, 64, 64); - --theme_dark--line_brown-text: var(--theme_dark--line-text); - --theme_dark--line_orange: rgb(89, 74, 58); - --theme_dark--line_orange-text: var(--theme_dark--line-text); - --theme_dark--line_yellow: rgb(89, 86, 59); - --theme_dark--line_yellow-text: var(--theme_dark--line-text); - --theme_dark--line_green: rgb(53, 76, 75); - --theme_dark--line_green-text: var(--theme_dark--line-text); - --theme_dark--line_blue: rgb(54, 73, 84); - --theme_dark--line_blue-text: var(--theme_dark--line-text); - --theme_dark--line_purple: rgb(68, 63, 87); - --theme_dark--line_purple-text: var(--theme_dark--line-text); - --theme_dark--line_pink: rgb(83, 59, 76); - --theme_dark--line_pink-text: var(--theme_dark--line-text); - --theme_dark--line_red: rgb(89, 65, 65); - --theme_dark--line_red-text: var(--theme_dark--line-text); - - --theme_dark--select-text: var(--theme_dark--text); - --theme_dark--select_gray: rgba(151, 154, 155, 0.5); - --theme_dark--select_gray-text: var(--theme_dark--select-text); - --theme_dark--select_brown: rgba(147, 114, 100, 0.5); - --theme_dark--select_brown-text: var(--theme_dark--select-text); - --theme_dark--select_orange: rgba(255, 163, 68, 0.5); - --theme_dark--select_orange-text: var(--theme_dark--select-text); - --theme_dark--select_yellow: rgba(255, 220, 73, 0.5); - --theme_dark--select_yellow-text: var(--theme_dark--select-text); - --theme_dark--select_green: rgba(77, 171, 154, 0.5); - --theme_dark--select_green-text: var(--theme_dark--select-text); - --theme_dark--select_blue: rgba(82, 156, 202, 0.5); - --theme_dark--select_blue-text: var(--theme_dark--select-text); - --theme_dark--select_purple: rgba(154, 109, 215, 0.5); - --theme_dark--select_purple-text: var(--theme_dark--select-text); - --theme_dark--select_pink: rgba(226, 85, 161, 0.5); - --theme_dark--select_pink-text: var(--theme_dark--select-text); - --theme_dark--select_red: rgba(255, 115, 105, 0.5); - --theme_dark--select_red-text: var(--theme_dark--select-text); - - --theme_dark--callout-text: var(--theme_dark--text); - --theme_dark--callout_gray: rgba(69, 75, 78, 0.3); - --theme_dark--callout_gray-text: var(--theme_dark--callout-text); - --theme_dark--callout_brown: rgba(67, 64, 64, 0.3); - --theme_dark--callout_brown-text: var(--theme_dark--callout-text); - --theme_dark--callout_orange: rgba(89, 74, 58, 0.3); - --theme_dark--callout_orange-text: var(--theme_dark--callout-text); - --theme_dark--callout_yellow: rgba(89, 86, 59, 0.3); - --theme_dark--callout_yellow-text: var(--theme_dark--callout-text); - --theme_dark--callout_green: rgba(53, 76, 75, 0.3); - --theme_dark--callout_green-text: var(--theme_dark--callout-text); - --theme_dark--callout_blue: rgba(54, 73, 84, 0.3); - --theme_dark--callout_blue-text: var(--theme_dark--callout-text); - --theme_dark--callout_purple: rgba(68, 63, 87, 0.3); - --theme_dark--callout_purple-text: var(--theme_dark--callout-text); - --theme_dark--callout_pink: rgba(83, 59, 76, 0.3); - --theme_dark--callout_pink-text: var(--theme_dark--callout-text); - --theme_dark--callout_red: rgba(89, 65, 65, 0.3); - --theme_dark--callout_red-text: var(--theme_dark--callout-text); - - --theme_dark--code_inline-text: #eb5757; - --theme_dark--code_inline-background: rgba(135, 131, 120, 0.15); - --theme_dark--code-text: var(--theme_dark--text); - --theme_dark--code-background: var(--theme_dark--card); - --theme_dark--code_function: var(--theme_dark--code-text); - --theme_dark--code_parameter: var(--theme_dark--code-text); - --theme_dark--code_keyword: hsl(350, 40%, 70%); - --theme_dark--code_constant: hsl(350, 40%, 70%); - --theme_dark--code_tag: hsl(350, 40%, 70%); - --theme_dark--code_operator: hsl(40, 90%, 60%); - --theme_dark--code_important: #e90; - --theme_dark--code_regex: #e90; - --theme_dark--code_property: hsl(350, 40%, 70%); - --theme_dark--code_builtin: hsl(75, 70%, 60%); - --theme_dark--code_class-name: var(--theme_dark--code-text); - --theme_dark--code_attr-name: hsl(75, 70%, 60%); - --theme_dark--code_attr-value: hsl(350, 40%, 70%); - --theme_dark--code_selector: hsl(75, 70%, 60%); - --theme_dark--code_id: var(--theme_dark--code-text); - --theme_dark--code_class: var(--theme_dark--code-text); - --theme_dark--code_pseudo-element: var(--theme_dark--code-text); - --theme_dark--code_pseudo-class: var(--theme_dark--code-text); - --theme_dark--code_attribute: var(--theme_dark--code-text); - --theme_dark--code_value: var(--theme_dark--code-text); - --theme_dark--code_unit: var(--theme_dark--code-text); - --theme_dark--code_comment: hsl(30, 20%, 50%); - --theme_dark--code_punctuation: var(--theme_dark--code-text); - --theme_dark--code_annotation: var(--theme_dark--code_punctuation); - --theme_dark--code_decorator: var(--theme_dark--code_punctuation); - --theme_dark--code_doctype: hsl(30, 20%, 50%); - --theme_dark--code_number: hsl(350, 40%, 70%); - --theme_dark--code_string: hsl(75, 70%, 60%); - --theme_dark--code_boolean: hsl(350, 40%, 70%); - - /** light **/ - - --theme_light--main: white; - --theme_light--sidebar: rgb(247, 246, 243); - --theme_light--overlay: rgba(15, 15, 15, 0.6); - --theme_light--dragarea: rgba(55, 53, 47, 0.04); - --theme_light--box-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px, - rgba(15, 15, 15, 0.1) 0px 2px 4px; - --theme_light--box-shadow_strong: rgba(15, 15, 15, 0.05) 0px 0px 0px 1px, - rgba(15, 15, 15, 0.1) 0px 3px 6px, rgba(15, 15, 15, 0.2) 0px 9px 24px; - --theme_light--page_normal-width: 900px; - --theme_light--page_full-width: 100%; - --theme_light--page-padding: calc(96px + env(safe-area-inset-left)); - --theme_light--page_banner-height: 30vh; - --theme_light--preview-width: 977px; - --theme_light--preview-padding: 8rem; - --theme_light--preview_banner-height: 20vh; - - --theme_light--font_sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', - Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji', - 'Segoe UI Symbol'; - --theme_light--font_serif: Lyon-Text, Georgia, YuMincho, 'Yu Mincho', - 'Hiragino Mincho ProN', 'Hiragino Mincho Pro', 'Songti TC', 'Songti SC', - SimSun, 'Nanum Myeongjo', NanumMyeongjo, Batang, serif; - --theme_light--font_mono: iawriter-mono, Nitti, Menlo, Courier, monospace; - --theme_light--font_code: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, - Courier, monospace; - --theme_light--font_quote: var(--theme_light--font_sans); - --theme_light--font_headings: var(--theme_light--font_sans); - - --theme_light--font_title-size: 40px; - --theme_light--font_heading1-size: 1.875em; - --theme_light--font_heading2-size: 1.5em; - --theme_light--font_heading3-size: 1.25em; - --theme_light--font_label-size: 14px; - --theme_light--font_body-size: 16px; - --theme_light--font_body-size_small: 14px; - --theme_light--font_code-size: 0.796875em; - --theme_light--font_sidebar-size: 14px; - - --theme_light--text-block_line-height: 1.5; - --theme_light--text-block_margin-top: 1px; - - --theme_light--scrollbar: #d9d8d6; - --theme_light--scrollbar-border: #cacac8; - --theme_light--scrollbar_hover: #cacac8; - - --theme_light--card: rgb(247, 247, 247); - --theme_light--gallery: rgba(55, 53, 47, 0.024); - --theme_light--select_input: rgba(242, 241, 238, 0.6); - --theme_light--table-border: rgba(55, 53, 47, 0.16); - --theme_light--table-border_row: rgb(223, 223, 222); - --theme_light--table-border_column: rgb(237, 237, 236); - --theme_light--table-border_selected: rgba(46, 170, 220, 0.6); - --theme_light--ui-border: rgba(55, 53, 47, 0.09); - --theme_light--interactive_hover: rgb(239, 239, 239); - --theme_light--interactive_hover-border: transparent; - --theme_light--button_close: #e81123; - --theme_light--button_close-fill: white; - - --theme_light--selected: rgba(46, 170, 220, 0.2); - --theme_light--primary: rgb(46, 170, 220); - --theme_light--primary_text: white; - --theme_light--primary_hover: rgb(6, 156, 205); - --theme_light--primary_click: rgb(0, 141, 190); - --theme_light--primary_indicator: rgb(235, 87, 87); - --theme_light--primary_indicator_text: var(--theme_light--primary_text); - --theme_light--primary_indicator_hover: rgba(45, 156, 219, 0.2); - - --theme_light--option-color: black; - --theme_light--option-background: transparent; - --theme_light--option_hover-color: black; - --theme_light--option_hover-background: rgba(55, 53, 47, 0.08); - --theme_light--option_active-color: white; - --theme_light--option_active-background: var(--theme_light--primary); - - --theme_light--danger_text: rgb(235, 87, 87); - --theme_light--danger_border: rgba(235, 87, 87, 0.5); - - --theme_light--divider: var(--theme_light--table-border); - - --theme_light--text: rgb(55, 53, 47); - --theme_light--text_ui: rgba(55, 53, 47, 0.6); - --theme_light--text_ui: rgba(55, 53, 47, 0.6); - --theme_light--text_ui_info: rgba(55, 53, 47, 0.4); - - --theme_light--text_gray: rgb(155, 154, 151); - --theme_light--text_brown: rgb(100, 71, 58); - --theme_light--text_orange: rgb(217, 115, 13); - --theme_light--text_yellow: rgb(223, 171, 1); - --theme_light--text_green: rgb(15, 123, 108); - --theme_light--text_blue: rgb(11, 110, 153); - --theme_light--text_purple: rgb(105, 64, 165); - --theme_light--text_pink: rgb(173, 26, 114); - --theme_light--text_red: rgb(224, 62, 62); - - --theme_light--bg-text: var(--theme_light--text); - --theme_light--bg_gray: rgb(235, 236, 237); - --theme_light--bg_gray-text: var(--theme_light--bg-text); - --theme_light--bg_brown: rgb(233, 229, 227); - --theme_light--bg_brown-text: var(--theme_light--bg-text); - --theme_light--bg_orange: rgb(250, 235, 221); - --theme_light--bg_orange-text: var(--theme_light--bg-text); - --theme_light--bg_yellow: rgb(251, 243, 219); - --theme_light--bg_yellow-text: var(--theme_light--bg-text); - --theme_light--bg_green: rgb(221, 237, 234); - --theme_light--bg_green-text: var(--theme_light--bg-text); - --theme_light--bg_blue: rgb(221, 235, 241); - --theme_light--bg_blue-text: var(--theme_light--bg-text); - --theme_light--bg_purple: rgb(234, 228, 242); - --theme_light--bg_purple-text: var(--theme_light--bg-text); - --theme_light--bg_pink: rgb(244, 223, 235); - --theme_light--bg_pink-text: var(--theme_light--bg-text); - --theme_light--bg_red: rgb(251, 228, 228); - --theme_light--bg_red-text: var(--theme_light--bg-text); - - --theme_light--line-text: var(--theme_light--text); - --theme_light--line_gray: rgb(235, 236, 237); - --theme_light--line_gray-text: var(--theme_light--line-text); - --theme_light--line_brown: rgb(233, 229, 227); - --theme_light--line_brown-text: var(--theme_light--line-text); - --theme_light--line_orange: rgb(250, 235, 221); - --theme_light--line_orange-text: var(--theme_light--line-text); - --theme_light--line_yellow: rgb(251, 243, 219); - --theme_light--line_yellow-text: var(--theme_light--line-text); - --theme_light--line_green: rgb(221, 237, 234); - --theme_light--line_green-text: var(--theme_light--line-text); - --theme_light--line_blue: rgb(221, 235, 241); - --theme_light--line_blue-text: var(--theme_light--line-text); - --theme_light--line_purple: rgb(234, 228, 242); - --theme_light--line_purple-text: var(--theme_light--line-text); - --theme_light--line_pink: rgb(244, 223, 235); - --theme_light--line_pink-text: var(--theme_light--line-text); - --theme_light--line_red: rgb(251, 228, 228); - --theme_light--line_red-text: var(--theme_light--line-text); - - --theme_light--select-text: var(--theme_light--text); - --theme_light--select_gray: rgba(140, 46, 0, 0.2); - --theme_light--select_gray-text: var(--theme_light--select-text); - --theme_light--select_brown: rgba(140, 46, 0, 0.2); - --theme_light--select_brown-text: var(--theme_light--select-text); - --theme_light--select_orange: rgba(245, 93, 0, 0.2); - --theme_light--select_orange-text: var(--theme_light--select-text); - --theme_light--select_yellow: rgba(233, 168, 0, 0.2); - --theme_light--select_yellow-text: var(--theme_light--select-text); - --theme_light--select_green: rgba(0, 135, 107, 0.2); - --theme_light--select_green-text: var(--theme_light--select-text); - --theme_light--select_blue: rgba(0, 120, 223, 0.2); - --theme_light--select_blue-text: var(--theme_light--select-text); - --theme_light--select_purple: rgba(103, 36, 222, 0.2); - --theme_light--select_purple-text: var(--theme_light--select-text); - --theme_light--select_pink: rgba(221, 0, 129, 0.2); - --theme_light--select_pink-text: var(--theme_light--select-text); - --theme_light--select_red: rgba(255, 0, 26, 0.2); - --theme_light--select_red-text: var(--theme_light--select-text); - - --theme_light--callout-text: var(--theme_light--text); - --theme_light--callout_gray: rgba(235, 236, 237, 0.3); - --theme_light--callout_gray-text: var(--theme_light--callout-text); - --theme_light--callout_brown: rgba(233, 229, 227, 0.3); - --theme_light--callout_brown-text: var(--theme_light--callout-text); - --theme_light--callout_orange: rgba(250, 235, 221, 0.3); - --theme_light--callout_orange-text: var(--theme_light--callout-text); - --theme_light--callout_yellow: rgba(251, 243, 219, 0.3); - --theme_light--callout_yellow-text: var(--theme_light--callout-text); - --theme_light--callout_green: rgba(221, 237, 234, 0.3); - --theme_light--callout_green-text: var(--theme_light--callout-text); - --theme_light--callout_blue: rgba(221, 235, 241, 0.3); - --theme_light--callout_blue-text: var(--theme_light--callout-text); - --theme_light--callout_purple: rgba(234, 228, 242, 0.3); - --theme_light--callout_purple-text: var(--theme_light--callout-text); - --theme_light--callout_pink: rgba(244, 223, 235, 0.3); - --theme_light--callout_pink-text: var(--theme_light--callout-text); - --theme_light--callout_red: rgba(251, 228, 228, 0.3); - --theme_light--callout_red-text: var(--theme_light--callout-text); - - --theme_light--code_inline-text: #eb5757; - --theme_light--code_inline-background: rgba(135, 131, 120, 0.15); - --theme_light--code-text: var(--theme_light--text); - --theme_light--code-background: var(--theme_light--card); - --theme_light--code_function: #dd4a68; - --theme_light--code_parameter: var(--theme_light--code-text); - --theme_light--code_keyword: #07a; - --theme_light--code_constant: #905; - --theme_light--code_tag: #905; - --theme_light--code_operator: #9a6e3a; - --theme_light--code_important: #e90; - --theme_light--code_regex: #e90; - --theme_light--code_property: #905; - --theme_light--code_builtin: #690; - --theme_light--code_class-name: #dd4a68; - --theme_light--code_attr-name: #690; - --theme_light--code_attr-value: #07a; - --theme_light--code_selector: #690; - --theme_light--code_id: var(--theme_light--code-text); - --theme_light--code_class: var(--theme_light--code-text); - --theme_light--code_pseudo-element: var(--theme_light--code-text); - --theme_light--code_pseudo-class: var(--theme_light--code-text); - --theme_light--code_attribute: var(--theme_light--code-text); - --theme_light--code_value: var(--theme_light--code-text); - --theme_light--code_unit: var(--theme_light--code-text); - --theme_light--code_comment: slategray; - --theme_light--code_punctuation: #999; - --theme_light--code_annotation: var(--theme_light--code_punctuation); - --theme_light--code_decorator: var(--theme_light--code_punctuation); - --theme_light--code_doctype: slategray; - --theme_light--code_number: #905; - --theme_light--code_string: #690; - --theme_light--code_boolean: #905; -} - -.notion-dark-theme { - --theme--main: var(--theme_dark--main); - --theme--sidebar: var(--theme_dark--sidebar); - --theme--overlay: var(--theme_dark--overlay); - --theme--dragarea: var(--theme_dark--dragarea); - --theme--box-shadow: var(--theme_dark--box-shadow); - --theme--box-shadow_strong: var(--theme_dark--box-shadow_strong); - --theme--page_normal-width: var(--theme_dark--page_normal-width); - --theme--page_full-width: var(--theme_dark--page_full-width); - --theme--page-padding: var(--theme_dark--page-padding); - --theme--page_banner-height: var(--theme_dark--page_banner-height); - --theme--preview-width: var(--theme_dark--preview-width); - --theme--preview-padding: var(--theme_dark--preview-padding); - --theme--preview_banner-height: var(--theme_dark--preview_banner-height); - --theme--font_sans: var(--theme_dark--font_sans); - --theme--font_serif: var(--theme_dark--font_serif); - --theme--font_mono: var(--theme_dark--font_mono); - --theme--font_code: var(--theme_dark--font_code); - --theme--font_quote: var(--theme_dark--font_quote); - --theme--font_headings: var(--theme_dark--font_headings); - --theme--font_title-size: var(--theme_dark--font_title-size); - --theme--font_heading1-size: var(--theme_dark--font_heading1-size); - --theme--font_heading2-size: var(--theme_dark--font_heading2-size); - --theme--font_heading3-size: var(--theme_dark--font_heading3-size); - --theme--font_label-size: var(--theme_dark--font_label-size); - --theme--font_body-size: var(--theme_dark--font_body-size); - --theme--font_body-size_small: var(--theme_dark--font_body-size_small); - --theme--font_code-size: var(--theme_dark--font_code-size); - --theme--font_sidebar-size: var(--theme_dark--font_sidebar-size); - --theme--text-block_line-height: var(--theme_dark--text-block_line-height); - --theme--text-block_margin-top: var(--theme_dark--text-block_margin-top); - --theme--scrollbar: var(--theme_dark--scrollbar); - --theme--scrollbar-border: var(--theme_dark--scrollbar-border); - --theme--scrollbar_hover: var(--theme_dark--scrollbar_hover); - --theme--card: var(--theme_dark--card); - --theme--gallery: var(--theme_dark--gallery); - --theme--select_input: var(--theme_dark--select_input); - --theme--table-border: var(--theme_dark--table-border); - --theme--table-border_row: var(--theme_dark--table-border_row); - --theme--table-border_column: var(--theme_dark--table-border_column); - --theme--table-border_selected: var(--theme_dark--table-border_selected); - --theme--ui-border: var(--theme_dark--ui-border); - --theme--interactive_hover: var(--theme_dark--interactive_hover); - --theme--interactive_hover-border: var( - --theme_dark--interactive_hover-border - ); - --theme--button_close: var(--theme_dark--button_close); - --theme--button_close-fill: var(--theme_dark--button_close-fill); - --theme--selected: var(--theme_dark--selected); - --theme--primary: var(--theme_dark--primary); - --theme--primary_text: var(--theme_dark--primary_text); - --theme--primary_hover: var(--theme_dark--primary_hover); - --theme--primary_click: var(--theme_dark--primary_click); - --theme--primary_indicator: var(--theme_dark--primary_indicator); - --theme--primary_indicator_text: var(--theme_dark--primary_indicator_text); - --theme--primary_indicator_hover: var(--theme_dark--primary_indicator_hover); - --theme--option-color: var(--theme_dark--option-color); - --theme--option-background: var(--theme_dark--option-background); - --theme--option_active-color: var(--theme_dark--option_active-color); - --theme--option_active-background: var( - --theme_dark--option_active-background - ); - --theme--option_hover-color: var(--theme_dark--option_hover-color); - --theme--option_hover-background: var(--theme_dark--option_hover-background); - --theme--danger_text: var(--theme_dark--danger_text); - --theme--danger_border: var(--theme_dark--danger_border); - --theme--divider: var(--theme_dark--divider); - --theme--text: var(--theme_dark--text); - --theme--text_ui: var(--theme_dark--text_ui); - --theme--text_ui_info: var(--theme_dark--text_ui_info); - --theme--text_gray: var(--theme_dark--text_gray); - --theme--text_brown: var(--theme_dark--text_brown); - --theme--text_orange: var(--theme_dark--text_orange); - --theme--text_yellow: var(--theme_dark--text_yellow); - --theme--text_green: var(--theme_dark--text_green); - --theme--text_blue: var(--theme_dark--text_blue); - --theme--text_purple: var(--theme_dark--text_purple); - --theme--text_pink: var(--theme_dark--text_pink); - --theme--text_red: var(--theme_dark--text_red); - --theme--select-text: var(--theme_dark--select-text); - --theme--bg-text: var(--theme_dark--bg-text); - --theme--bg_gray: var(--theme_dark--bg_gray); - --theme--bg_gray-text: var(--theme_dark--bg_gray-text); - --theme--bg_brown: var(--theme_dark--bg_brown); - --theme--bg_brown-text: var(--theme_dark--bg_brown-text); - --theme--bg_orange: var(--theme_dark--bg_orange); - --theme--bg_orange-text: var(--theme_dark--bg_orange-text); - --theme--bg_yellow: var(--theme_dark--bg_yellow); - --theme--bg_yellow-text: var(--theme_dark--bg_yellow-text); - --theme--bg_green: var(--theme_dark--bg_green); - --theme--bg_green-text: var(--theme_dark--bg_green-text); - --theme--bg_blue: var(--theme_dark--bg_blue); - --theme--bg_blue-text: var(--theme_dark--bg_blue-text); - --theme--bg_purple: var(--theme_dark--bg_purple); - --theme--bg_purple-text: var(--theme_dark--bg_purple-text); - --theme--bg_pink: var(--theme_dark--bg_pink); - --theme--bg_pink-text: var(--theme_dark--bg_pink-text); - --theme--bg_red: var(--theme_dark--bg_red); - --theme--bg_red-text: var(--theme_dark--bg_red-text); - --theme--line-text: var(--theme_dark--line-text); - --theme--line_gray: var(--theme_dark--line_gray); - --theme--line_gray-text: var(--theme_dark--line_gray-text); - --theme--line_brown: var(--theme_dark--line_brown); - --theme--line_brown-text: var(--theme_dark--line_brown-text); - --theme--line_orange: var(--theme_dark--line_orange); - --theme--line_orange-text: var(--theme_dark--line_orange-text); - --theme--line_yellow: var(--theme_dark--line_yellow); - --theme--line_yellow-text: var(--theme_dark--line_yellow-text); - --theme--line_green: var(--theme_dark--line_green); - --theme--line_green-text: var(--theme_dark--line_green-text); - --theme--line_blue: var(--theme_dark--line_blue); - --theme--line_blue-text: var(--theme_dark--line_blue-text); - --theme--line_purple: var(--theme_dark--line_purple); - --theme--line_purple-text: var(--theme_dark--line_purple-text); - --theme--line_pink: var(--theme_dark--line_pink); - --theme--line_pink-text: var(--theme_dark--line_pink-text); - --theme--line_red: var(--theme_dark--line_red); - --theme--line_red-text: var(--theme_dark--line_red-text); - --theme--select_gray: var(--theme_dark--select_gray); - --theme--select_gray-text: var(--theme_dark--select_gray-text); - --theme--select_brown: var(--theme_dark--select_brown); - --theme--select_brown-text: var(--theme_dark--select_brown-text); - --theme--select_orange: var(--theme_dark--select_orange); - --theme--select_orange-text: var(--theme_dark--select_orange-text); - --theme--select_yellow: var(--theme_dark--select_yellow); - --theme--select_yellow-text: var(--theme_dark--select_yellow-text); - --theme--select_green: var(--theme_dark--select_green); - --theme--select_green-text: var(--theme_dark--select_green-text); - --theme--select_blue: var(--theme_dark--select_blue); - --theme--select_blue-text: var(--theme_dark--select_blue-text); - --theme--select_purple: var(--theme_dark--select_purple); - --theme--select_purple-text: var(--theme_dark--select_purple-text); - --theme--select_pink: var(--theme_dark--select_pink); - --theme--select_pink-text: var(--theme_dark--select_pink-text); - --theme--select_red: var(--theme_dark--select_red); - --theme--select_red-text: var(--theme_dark--select_red-text); - --theme--callout-text: var(--theme_dark--callout-text); - --theme--callout_gray: var(--theme_dark--callout_gray); - --theme--callout_gray-text: var(--theme_dark--callout_gray-text); - --theme--callout_brown: var(--theme_dark--callout_brown); - --theme--callout_brown-text: var(--theme_dark--callout_brown-text); - --theme--callout_orange: var(--theme_dark--callout_orange); - --theme--callout_orange-text: var(--theme_dark--callout_orange-text); - --theme--callout_yellow: var(--theme_dark--callout_yellow); - --theme--callout_yellow-text: var(--theme_dark--callout_yellow-text); - --theme--callout_green: var(--theme_dark--callout_green); - --theme--callout_green-text: var(--theme_dark--callout_green-text); - --theme--callout_blue: var(--theme_dark--callout_blue); - --theme--callout_blue-text: var(--theme_dark--callout_blue-text); - --theme--callout_purple: var(--theme_dark--callout_purple); - --theme--callout_purple-text: var(--theme_dark--callout_purple-text); - --theme--callout_pink: var(--theme_dark--callout_pink); - --theme--callout_pink-text: var(--theme_dark--callout_pink-text); - --theme--callout_red: var(--theme_dark--callout_red); - --theme--callout_red-text: var(--theme_dark--callout_red-text); - --theme--code_inline-text: var(--theme_dark--code_inline-text); - --theme--code_inline-background: var(--theme_dark--code_inline-background); - --theme--code-text: var(--theme_dark--code-text); - --theme--code-background: var(--theme_dark--code-background); - --theme--code_function: var(--theme_dark--code_function); - --theme--code_parameter: var(--theme_dark--code_parameter); - --theme--code_keyword: var(--theme_dark--code_keyword); - --theme--code_constant: var(--theme_dark--code_constant); - --theme--code_tag: var(--theme_dark--code_tag); - --theme--code_operator: var(--theme_dark--code_operator); - --theme--code_important: var(--theme_dark--code_important); - --theme--code_regex: var(--theme_dark--code_regex); - --theme--code_property: var(--theme_dark--code_property); - --theme--code_builtin: var(--theme_dark--code_builtin); - --theme--code_class-name: var(--theme_dark--code_class-name); - --theme--code_attr-name: var(--theme_dark--code_attr-name); - --theme--code_attr-value: var(--theme_dark--code_attr-value); - --theme--code_selector: var(--theme_dark--code_selector); - --theme--code_id: var(--theme_dark--code_id); - --theme--code_class: var(--theme_dark--code_class); - --theme--code_pseudo-element: var(--theme_dark--code_pseudo-element); - --theme--code_pseudo-class: var(--theme_dark--code_pseudo-class); - --theme--code_attribute: var(--theme_dark--code_attribute); - --theme--code_value: var(--theme_dark--code_value); - --theme--code_unit: var(--theme_dark--code_unit); - --theme--code_comment: var(--theme_dark--code_comment); - --theme--code_punctuation: var(--theme_dark--code_punctuation); - --theme--code_annotation: var(--theme_dark--code_annotation); - --theme--code_decorator: var(--theme_dark--code_decorator); - --theme--code_doctype: var(--theme_dark--code_doctype); - --theme--code_number: var(--theme_dark--code_number); - --theme--code_string: var(--theme_dark--code_string); - --theme--code_boolean: var(--theme_dark--code_boolean); -} - -.notion-light-theme { - --theme--main: var(--theme_light--main); - --theme--sidebar: var(--theme_light--sidebar); - --theme--overlay: var(--theme_light--overlay); - --theme--dragarea: var(--theme_light--dragarea); - --theme--box-shadow: var(--theme_light--box-shadow); - --theme--box-shadow_strong: var(--theme_light--box-shadow_strong); - --theme--page_normal-width: var(--theme_light--page_normal-width); - --theme--page_full-width: var(--theme_light--page_full-width); - --theme--page-padding: var(--theme_light--page-padding); - --theme--page_banner-height: var(--theme_light--page_banner-height); - --theme--preview-width: var(--theme_light--preview-width); - --theme--preview-padding: var(--theme_light--preview-padding); - --theme--preview_banner-height: var(--theme_light--preview_banner-height); - --theme--font_sans: var(--theme_light--font_sans); - --theme--font_serif: var(--theme_light--font_serif); - --theme--font_mono: var(--theme_light--font_mono); - --theme--font_code: var(--theme_light--font_code); - --theme--font_quote: var(--theme_light--font_quote); - --theme--font_headings: var(--theme_light--font_headings); - --theme--font_title-size: var(--theme_light--font_title-size); - --theme--font_heading1-size: var(--theme_light--font_heading1-size); - --theme--font_heading2-size: var(--theme_light--font_heading2-size); - --theme--font_heading3-size: var(--theme_light--font_heading3-size); - --theme--font_label-size: var(--theme_light--font_label-size); - --theme--font_body-size: var(--theme_light--font_body-size); - --theme--font_body-size_small: var(--theme_light--font_body-size_small); - --theme--font_code-size: var(--theme_light--font_code-size); - --theme--font_sidebar-size: var(--theme_light--font_sidebar-size); - --theme--text-block_line-height: var(--theme_light--text-block_line-height); - --theme--text-block_margin-top: var(--theme_light--text-block_margin-top); - --theme--scrollbar: var(--theme_light--scrollbar); - --theme--scrollbar-border: var(--theme_light--scrollbar-border); - --theme--scrollbar_hover: var(--theme_light--scrollbar_hover); - --theme--card: var(--theme_light--card); - --theme--gallery: var(--theme_light--gallery); - --theme--select_input: var(--theme_light--select_input); - --theme--table-border: var(--theme_light--table-border); - --theme--table-border_row: var(--theme_light--table-border_row); - --theme--table-border_column: var(--theme_light--table-border_column); - --theme--table-border_selected: var(--theme_light--table-border_selected); - --theme--ui-border: var(--theme_light--ui-border); - --theme--interactive_hover: var(--theme_light--interactive_hover); - --theme--interactive_hover-border: var( - --theme_light--interactive_hover-border - ); - --theme--button_close: var(--theme_light--button_close); - --theme--button_close-fill: var(--theme_light--button_close-fill); - --theme--selected: var(--theme_light--selected); - --theme--primary: var(--theme_light--primary); - --theme--primary_text: var(--theme_light--primary_text); - --theme--primary_hover: var(--theme_light--primary_hover); - --theme--primary_click: var(--theme_light--primary_click); - --theme--primary_indicator: var(--theme_light--primary_indicator); - --theme--primary_indicator_text: var(--theme_light--primary_indicator_text); - --theme--primary_indicator_hover: var(--theme_light--primary_indicator_hover); - --theme--option-color: var(--theme_light--option-color); - --theme--option-background: var(--theme_light--option-background); - --theme--option_hover-color: var(--theme_light--option_hover-color); - --theme--option_hover-background: var(--theme_light--option_hover-background); - --theme--option_active-color: var(--theme_light--option_active-color); - --theme--option_active-background: var( - --theme_light--option_active-background - ); - --theme--danger_text: var(--theme_light--danger_text); - --theme--danger_border: var(--theme_light--danger_border); - --theme--divider: var(--theme_light--divider); - --theme--text: var(--theme_light--text); - --theme--text_ui: var(--theme_light--text_ui); - --theme--text_ui_info: var(--theme_light--text_ui_info); - --theme--text_gray: var(--theme_light--text_gray); - --theme--text_brown: var(--theme_light--text_brown); - --theme--text_orange: var(--theme_light--text_orange); - --theme--text_yellow: var(--theme_light--text_yellow); - --theme--text_green: var(--theme_light--text_green); - --theme--text_blue: var(--theme_light--text_blue); - --theme--text_purple: var(--theme_light--text_purple); - --theme--text_pink: var(--theme_light--text_pink); - --theme--text_red: var(--theme_light--text_red); - --theme--select-text: var(--theme_light--select-text); - --theme--bg-text: var(--theme_light--bg-text); - --theme--bg_gray: var(--theme_light--bg_gray); - --theme--bg_gray-text: var(--theme_light--bg_gray-text); - --theme--bg_brown: var(--theme_light--bg_brown); - --theme--bg_brown-text: var(--theme_light--bg_brown-text); - --theme--bg_orange: var(--theme_light--bg_orange); - --theme--bg_orange-text: var(--theme_light--bg_orange-text); - --theme--bg_yellow: var(--theme_light--bg_yellow); - --theme--bg_yellow-text: var(--theme_light--bg_yellow-text); - --theme--bg_green: var(--theme_light--bg_green); - --theme--bg_green-text: var(--theme_light--bg_green-text); - --theme--bg_blue: var(--theme_light--bg_blue); - --theme--bg_blue-text: var(--theme_light--bg_blue-text); - --theme--bg_purple: var(--theme_light--bg_purple); - --theme--bg_purple-text: var(--theme_light--bg_purple-text); - --theme--bg_pink: var(--theme_light--bg_pink); - --theme--bg_pink-text: var(--theme_light--bg_pink-text); - --theme--bg_red: var(--theme_light--bg_red); - --theme--bg_red-text: var(--theme_light--bg_red-text); - --theme--line-text: var(--theme_light--line-text); - --theme--line_gray: var(--theme_light--line_gray); - --theme--line_gray-text: var(--theme_light--line_gray-text); - --theme--line_brown: var(--theme_light--line_brown); - --theme--line_brown-text: var(--theme_light--line_brown-text); - --theme--line_orange: var(--theme_light--line_orange); - --theme--line_orange-text: var(--theme_light--line_orange-text); - --theme--line_yellow: var(--theme_light--line_yellow); - --theme--line_yellow-text: var(--theme_light--line_yellow-text); - --theme--line_green: var(--theme_light--line_green); - --theme--line_green-text: var(--theme_light--line_green-text); - --theme--line_blue: var(--theme_light--line_blue); - --theme--line_blue-text: var(--theme_light--line_blue-text); - --theme--line_purple: var(--theme_light--line_purple); - --theme--line_purple-text: var(--theme_light--line_purple-text); - --theme--line_pink: var(--theme_light--line_pink); - --theme--line_pink-text: var(--theme_light--line_pink-text); - --theme--line_red: var(--theme_light--line_red); - --theme--line_red-text: var(--theme_light--line_red-text); - --theme--select_gray: var(--theme_light--select_gray); - --theme--select_gray-text: var(--theme_light--select_gray-text); - --theme--select_brown: var(--theme_light--select_brown); - --theme--select_brown-text: var(--theme_light--select_brown-text); - --theme--select_orange: var(--theme_light--select_orange); - --theme--select_orange-text: var(--theme_light--select_orange-text); - --theme--select_yellow: var(--theme_light--select_yellow); - --theme--select_yellow-text: var(--theme_light--select_yellow-text); - --theme--select_green: var(--theme_light--select_green); - --theme--select_green-text: var(--theme_light--select_green-text); - --theme--select_blue: var(--theme_light--select_blue); - --theme--select_blue-text: var(--theme_light--select_blue-text); - --theme--select_purple: var(--theme_light--select_purple); - --theme--select_purple-text: var(--theme_light--select_purple-text); - --theme--select_pink: var(--theme_light--select_pink); - --theme--select_pink-text: var(--theme_light--select_pink-text); - --theme--select_red: var(--theme_light--select_red); - --theme--select_red-text: var(--theme_light--select_red-text); - --theme--callout-text: var(--theme_light--callout-text); - --theme--callout_gray: var(--theme_light--callout_gray); - --theme--callout_gray-text: var(--theme_light--callout_gray-text); - --theme--callout_brown: var(--theme_light--callout_brown); - --theme--callout_brown-text: var(--theme_light--callout_brown-text); - --theme--callout_orange: var(--theme_light--callout_orange); - --theme--callout_orange-text: var(--theme_light--callout_orange-text); - --theme--callout_yellow: var(--theme_light--callout_yellow); - --theme--callout_yellow-text: var(--theme_light--callout_yellow-text); - --theme--callout_green: var(--theme_light--callout_green); - --theme--callout_green-text: var(--theme_light--callout_green-text); - --theme--callout_blue: var(--theme_light--callout_blue); - --theme--callout_blue-text: var(--theme_light--callout_blue-text); - --theme--callout_purple: var(--theme_light--callout_purple); - --theme--callout_purple-text: var(--theme_light--callout_purple-text); - --theme--callout_pink: var(--theme_light--callout_pink); - --theme--callout_pink-text: var(--theme_light--callout_pink-text); - --theme--callout_red: var(--theme_light--callout_red); - --theme--callout_red-text: var(--theme_light--callout_red-text); - --theme--code_inline-text: var(--theme_light--code_inline-text); - --theme--code_inline-background: var(--theme_light--code_inline-background); - --theme--code-text: var(--theme_light--code-text); - --theme--code-background: var(--theme_light--code-background); - --theme--code_function: var(--theme_light--code_function); - --theme--code_parameter: var(--theme_light--code_parameter); - --theme--code_keyword: var(--theme_light--code_keyword); - --theme--code_constant: var(--theme_light--code_constant); - --theme--code_tag: var(--theme_light--code_tag); - --theme--code_operator: var(--theme_light--code_operator); - --theme--code_important: var(--theme_light--code_important); - --theme--code_regex: var(--theme_light--code_regex); - --theme--code_property: var(--theme_light--code_property); - --theme--code_builtin: var(--theme_light--code_builtin); - --theme--code_class-name: var(--theme_light--code_class-name); - --theme--code_attr-name: var(--theme_light--code_attr-name); - --theme--code_attr-value: var(--theme_light--code_attr-value); - --theme--code_selector: var(--theme_light--code_selector); - --theme--code_id: var(--theme_light--code_id); - --theme--code_class: var(--theme_light--code_class); - --theme--code_pseudo-element: var(--theme_light--code_pseudo-element); - --theme--code_pseudo-class: var(--theme_light--code_pseudo-class); - --theme--code_attribute: var(--theme_light--code_attribute); - --theme--code_value: var(--theme_light--code_value); - --theme--code_unit: var(--theme_light--code_unit); - --theme--code_comment: var(--theme_light--code_comment); - --theme--code_punctuation: var(--theme_light--code_punctuation); - --theme--code_annotation: var(--theme_light--code_annotation); - --theme--code_decorator: var(--theme_light--code_decorator); - --theme--code_doctype: var(--theme_light--code_doctype); - --theme--code_number: var(--theme_light--code_number); - --theme--code_string: var(--theme_light--code_string); - --theme--code_boolean: var(--theme_light--code_boolean); -} diff --git a/temp/custom-inserts/mod.js b/temp/custom-inserts/mod.js deleted file mode 100644 index 9c05008..0000000 --- a/temp/custom-inserts/mod.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - * custom inserts - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -'use strict'; - -const { createElement } = require('../../pkg/helpers.js'); - -module.exports = { - id: 'b4b0aced-2059-43bf-8d1d-ccd757ee5ebb', - tags: ['extension'], - name: 'custom inserts', - desc: `link files for small client-side tweaks. (not sure how to do something? check out the - [tweaks](https://github.com/notion-enhancer/notion-enhancer/blob/master/TWEAKS.md) collection.)`, - version: '0.1.3', - author: 'dragonwocky', - options: [ - { - key: 'css', - label: 'css insert', - type: 'file', - extensions: ['css'], - }, - { - key: 'js', - label: 'client-side js insert', - type: 'file', - extensions: ['js'], - }, - ], - hacks: { - 'renderer/preload.js'(store, __exports) { - const fs = require('fs-extra'); - document.addEventListener('readystatechange', (event) => { - if (document.readyState !== 'complete') return false; - if (store().css) { - try { - document - .querySelector('head') - .appendChild( - createElement( - `` - ) - ); - } catch (err) { - console.warn(' invalid css file... unsetting.'); - store().css = ''; - } - } - if (store().js) { - try { - require(store().js); - } catch (err) { - console.warn(' invalid js file... unsetting.'); - store().js = ''; - } - } - }); - }, - }, -}; diff --git a/temp/panel-sites/app.css b/temp/panel-sites/app.css deleted file mode 100644 index c4aaf3e..0000000 --- a/temp/panel-sites/app.css +++ /dev/null @@ -1,12 +0,0 @@ -/* - * panel sites - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 CloudHill - * under the MIT license - */ - -.panel-site { - border: none; - flex: 1; - background: white; -} diff --git a/temp/panel-sites/mod.js b/temp/panel-sites/mod.js deleted file mode 100644 index fb83182..0000000 --- a/temp/panel-sites/mod.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * panel sites - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 CloudHill - * under the MIT license - */ - -'use strict'; - -module.exports = { - id: '0d541743-eb2c-4d77-83a8-3b2f5e8e5dff', - tags: ['extension', 'panel'], - name: 'panel sites', - desc: 'embed sites on the site panel.', - version: '1.0.0', - author: 'CloudHill', - options: [ - { - key: 'sites', - label: 'list of sites', - type: 'file', - extensions: ['json'], - }, - ], - panel: { - js: 'panel.js' - } -}; diff --git a/temp/panel-sites/panel.js b/temp/panel-sites/panel.js deleted file mode 100644 index 04d9ff4..0000000 --- a/temp/panel-sites/panel.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * panel sites - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 CloudHill - * under the MIT license - */ - -const electron = require('electron') - -module.exports = (store) => { - let iframe; - const mainWindow = electron.remote.getCurrentWindow(); - const originalUserAgent = mainWindow.webContents.getUserAgent(); - const mobileUserAgent = - 'Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36' - - // bypass x-frame-options - mainWindow.webContents.session.webRequest.onHeadersReceived((details, callback) => { - const responseHeaders = Object.entries(details.responseHeaders) - .filter( h => !/x-frame-options/i.test(h[0]) ); - callback({ - responseHeaders: Object.fromEntries(responseHeaders) - }); - }); - - // handle opening mobile sites - function setUserAgent(userAgent) { - mainWindow.webContents.session.webRequest.onBeforeSendHeaders((details, callback) => { - details.requestHeaders['User-Agent'] = userAgent; - callback({ cancel: false, requestHeaders: details.requestHeaders }); - }); - } - - return { - onLoad() { - iframe = document.querySelector('.panel-site'); - if (iframe.hasAttribute('mobile-user-agent')) - setUserAgent(mobileUserAgent); - }, - onSwitch() { - if (iframe.hasAttribute('mobile-user-agent')) - setUserAgent(originalUserAgent); - } - } -} diff --git a/temp/side-panel/app.css b/temp/side-panel/app.css deleted file mode 100644 index 901147c..0000000 --- a/temp/side-panel/app.css +++ /dev/null @@ -1,219 +0,0 @@ -/* - * side panel - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 CloudHill - * under the MIT license - */ - -.notion-frame { - transition: padding-right 300ms ease-in-out; -} -.enhancer-panel--container { - flex-grow: 0; - flex-shrink: 0; - position: absolute; - top: 0; - bottom: 0; - right: 0; - z-index: 99; - height: 100vh; - background: var(--theme--sidebar); - color: var(--theme--text_ui); - font-weight: 500; - cursor: default; - transition: box-shadow 300ms ease-in, width 300ms ease-in-out; -} - -#enhancer-panel { - display: flex; - flex-direction: column; - position: relative; - pointer-events: auto; - background: var(--theme--sidebar); - cursor: auto; - max-height: 100%; - transition: transform 300ms ease-in-out, - opacity 300ms ease-in-out, - right 300ms ease-in-out; -} -#enhancer-panel[data-locked="false"] { - max-height: calc(100vh - 120px); - box-shadow: var(--theme--box-shadow_strong) !important; -} -#enhancer-panel[data-full-height="true"] { - height: 100%; -} -#enhancer-panel[data-locked="false"][data-full-height="true"] { - height: calc(100vh - 120px); -} - -.enhancer-panel--header { - flex-grow: 0; - flex-shrink: 0; - display: flex; - align-items: center; - height: 45px; - width: 100%; - color: var(--theme--text); - font-size: 14px; - padding: 2px 14px; - overflow: hidden; - user-select: none; - cursor: pointer; - transition: color 0.4s ease, background 0.4s ease, box-shadow 0.4s ease; -} -.enhancer-panel--header:hover { - background: var(--theme--interactive_hover); -} - -.enhancer-panel--icon { - flex-grow: 0; - flex-shrink: 0; - border-radius: 3px; - width: 22px; - height: 22px; - margin-right: 8px; - display: flex; - align-items: center; - justify-content: center; -} -.enhancer-panel--icon svg { - width: 100%; - height: 100%; -} - -.enhancer-panel--title { - margin-right: 6px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.enhancer-panel--reload-button { - flex-grow: 0; - flex-shrink: 0; - display: flex; - align-items: center; - justify-content: center; - width: 24px; - height: 24px; - padding: 6px; - margin-right: 6px; - border-radius: 3px; - transition: background 20ms ease-in; -} -.enhancer-panel--reload-button:hover { - background: var(--theme--main) -} - -.enhancer-panel--switcher-icon { - flex-grow: 0; - flex-shrink: 0; - width: 12px; - height: 12px; - fill: var(--theme--text_ui); -} -.enhancer-panel--reload-button svg, -.enhancer-panel--switcher-icon svg { - width: 100%; - height: 100%; - display: block; - fill: var(--theme--text_ui_info); -} - -.enhancer-panel--toggle { - flex-grow: 0; - flex-shrink: 0; - position: relative; - display: flex; - align-items: center; - justify-content: center; - margin-left: auto; - height: 24px; - width: 24px; - border-radius: 3px; - cursor: pointer; - opacity: 0; - transition: background 20ms ease-in, opacity 300ms ease-in; -} -#enhancer-panel:hover .enhancer-panel--toggle { - opacity: 1; -} -.enhancer-panel--toggle:hover { - background: var(--theme--interactive_hover); -} -.enhancer-panel--toggle svg { - width: 14px; - height: 14px; - fill: var(--theme--text_ui); - transition: transform 400ms ease-in; - fill: var(--theme--text_ui_info); -} -#enhancer-panel[data-locked="false"] .enhancer-panel--toggle svg { - transform: rotateZ(-180deg); -} - -#enhancer-panel--content { - flex: 1; - width: 100%; - color: var(--theme--text); - font-size: var(--theme--font_body-size); - display: flex; - flex-direction: column; - position: relative; - min-height: 0; -} - -.enhancer-panel--resize { - position: absolute; - top: 0px; - left: 0px; - height: 100vh; - width: 0px; - z-index: 1; -} -#enhancer-panel[data-locked="false"] .enhancer-panel--resize { - height: 100%; -} -.enhancer-panel--resize div { - height: 100%; - width: 6px; -} - -.enhancer-panel--overlay-container { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 999; - overflow: hidden; -} - -.enhancer-panel--switcher { - max-width: 320px; - position: relative; - right: 14px; - border-radius: 3px; - padding: 8px 0; - box-shadow: var(--theme--box-shadow_strong); - background: var(--theme--card); - overflow: hidden; -} - -.enhancer-panel--switcher-item { - display: flex; - align-items: center; - width: 100%; - padding: 8px 14px; - color: var(--theme--text); - font-size: 14px; - user-select: none; - cursor: pointer; - overflow: hidden; - transition: background 300ms ease; -} -.enhancer-panel--switcher-item:hover, -.enhancer-panel--switcher-item:focus { - background: var(--theme--interactive_hover); -} diff --git a/temp/side-panel/icons/double-chevron.svg b/temp/side-panel/icons/double-chevron.svg deleted file mode 100644 index 725d191..0000000 --- a/temp/side-panel/icons/double-chevron.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/temp/side-panel/icons/reload.svg b/temp/side-panel/icons/reload.svg deleted file mode 100644 index d50b922..0000000 --- a/temp/side-panel/icons/reload.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/temp/side-panel/icons/switcher.svg b/temp/side-panel/icons/switcher.svg deleted file mode 100644 index e47e262..0000000 --- a/temp/side-panel/icons/switcher.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/temp/side-panel/mod.js b/temp/side-panel/mod.js deleted file mode 100644 index c830516..0000000 --- a/temp/side-panel/mod.js +++ /dev/null @@ -1,506 +0,0 @@ -/* - * side panel - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * (c) 2020 CloudHill - * under the MIT license - */ - -'use strict'; - -const { createElement, getEnhancements } = require('../../pkg/helpers.js'), - path = require('path'), - fs = require('fs-extra'); - -module.exports = { - id: 'c8b1db83-ee37-45b4-bdb3-a7f3d36113db', - tags: ['extension', 'panel'], - name: 'side panel', - desc: 'adds a side panel to notion.', - version: '1.1.0', - author: 'CloudHill', - hacks: { - 'renderer/preload.js'(store, __exports) { - // Load icons - let icons = {}; - (async () => { - icons.doubleChevron = await fs.readFile( path.resolve(__dirname, 'icons/double-chevron.svg') ); - icons.switcher = await fs.readFile( path.resolve(__dirname, 'icons/switcher.svg') ); - icons.reload = await fs.readFile( path.resolve(__dirname, 'icons/reload.svg') ); - })(); - - // Load panel mods - let panelMods = - getEnhancements().loaded.filter( - mod => (mod.panel && (store('mods')[mod.id] || {}).enabled) - ); - panelMods.forEach(mod => initMod(mod)); - - document.addEventListener('readystatechange', (event) => { - if (document.readyState !== 'complete') return false; - if (panelMods.length < 1) return; - - const attempt_interval = setInterval(enhance, 500); - function enhance() { - if (!store().width) store().width = 220; - let curPanel = {}; - - const frame = document.querySelector('.notion-frame'); - if (!frame) return; - clearInterval(attempt_interval); - - // Initialize panel - const container = createElement( - '
' - ); - const panel = createElement( - `
` - ); - - frame.after(container); - container.appendChild(panel); - - // Panel contents - const header = createElement(` -
-
-
-
- `); - const toggle = createElement( - `
${icons.doubleChevron}
` - ); - const content = createElement( - '
' - ); - const resize = createElement(` -
-
-
- `); - - panel.append(header, content, resize); - - // Add switcher if there is more than one panel mods - if (panelMods.length > 1) { - header.addEventListener('click', renderSwitcher); - const switcherIcon = createElement( - `
${icons.switcher}
` - ) - header.appendChild(switcherIcon); - } else { - header.addEventListener('click', togglePanel); - } - - header.appendChild(toggle); - toggle.addEventListener('click', togglePanel); - - // Keybind - document.addEventListener('keyup', e => { - const hotkey = { - code: 'Backslash', - ctrlKey: true, - shiftKey: true, - metaKey: false, - altKey: false, - }; - for (let prop in hotkey) - if (hotkey[prop] !== e[prop]) return; - togglePanel(); - }); - - // Restore lock state - if (store().locked === 'false') unlockPanel(false); - else lockPanel(); - - enableResize(); - - // Attempt to load last opened mod - let loaded = false; - if (store().last_open) { - panelMods.forEach(mod => { - if (mod.id === store().last_open) { - loadContent(mod); - loaded = true; - } - }); - } - if (!loaded) loadContent(panelMods[0]); - - function loadContent(mod) { - if (curPanel.js && curPanel.js.onSwitch) curPanel.js.onSwitch(); - curPanel = mod.panel; - - store().last_open = mod.id; - panel.querySelector('.enhancer-panel--title').innerHTML = mod.panel.name || mod.name; - - // Reload button - let reloadButton = panel.querySelector('.enhancer-panel--reload-button'); - if (reloadButton) reloadButton.remove(); - if (mod.panel.reload) { - reloadButton = createElement( - `
${icons.reload}
` - ) - reloadButton.addEventListener('click', e => { - e.stopPropagation(); - loadContent(mod); - }) - panel.querySelector('.enhancer-panel--title').after(reloadButton); - } - - panel.querySelector('.enhancer-panel--icon').innerHTML = mod.panel.icon; - document.getElementById('enhancer-panel--content').innerHTML = mod.panel.html; - panel.dataset.fullHeight = mod.panel.fullHeight || false; - - if (curPanel.js && curPanel.js.onLoad) - curPanel.js.onLoad(); - } - - function unlockPanel(animate) { - panel.dataset.locked = 'false'; - setPanelWidth(store().width); - - if (animate) { - panel.animate( - [ - { opacity: 1, transform: 'none' }, - { opacity: 1, transform: 'translateY(60px)', offset: 0.4}, - { opacity: 0, transform: `translateX(${store().width - 30}px) translateY(60px)`}, - ], - { duration: 600, easing: 'ease-out' } - ).onfinish = () => { - panel.addEventListener('mouseover', showPanel); - panel.addEventListener('mouseleave', hidePanel); - } - } else { - panel.addEventListener('mouseover', showPanel); - panel.addEventListener('mouseleave', hidePanel); - } - - hidePanel(); - - if (curPanel.js && curPanel.js.onUnlock) { - curPanel.js.onUnlock(); - } - } - - function lockPanel() { - panel.dataset.locked = 'true'; - setPanelWidth(store().width); - - // Reset animation styles - panel.style.opacity = ''; - panel.style.transform = ''; - - // Hover event listeners - panel.removeEventListener('mouseover', showPanel); - panel.removeEventListener('mouseleave', hidePanel); - - if (curPanel.js && curPanel.js.onLock) { - curPanel.js.onLock(); - } - } - - function togglePanel(e) { - if (e) e.stopPropagation(); - if (isLocked()) unlockPanel(true); - else lockPanel(); - store().locked = panel.dataset.locked; - } - - function showPanel() { - if (!isLocked()) { - panel.style.opacity = 1; - panel.style.transform = 'translateY(60px)'; - } - } - - function hidePanel() { - if (!isLocked()) { - panel.style.opacity = 0; - panel.style.transform = `translateX(${store().width - 30}px) translateY(60px)`; - } - } - - function renderSwitcherItem(mod) { - if (mod.panel) { - const item = createElement( - `
-
${mod.panel.icon}
-
${mod.panel.name || mod.name}
-
` - ); - item.addEventListener('click', () => loadContent(mod)); - return item; - } - } - - function renderSwitcher() { - if (document.querySelector('.enhancer-panel--overlay-container')) return; - - // Layer to close switcher - const overlayContainer = createElement( - '
' - ); - overlayContainer.addEventListener('click', hideSwitcher) - document - .querySelector('.notion-app-inner') - .appendChild(overlayContainer); - - // Position switcher below header - const rect = panel.querySelector('.enhancer-panel--header').getBoundingClientRect(); - const div = createElement(` -
-
-
- `); - - // Render switcher - const switcher = createElement( - '
' - ); - panelMods.forEach(mod => - switcher.append(renderSwitcherItem(mod)) - ); - - overlayContainer.appendChild(div); - div.firstElementChild.appendChild(switcher); - - switcher.firstElementChild.focus(); - - // Fade in - switcher.animate( - [ {opacity: 0}, {opacity: 1} ], - { duration: 200 } - ); - - // Prevent panel from closing if unlocked - panel.removeEventListener('mouseleave', hidePanel); - - // Escape key listener - document.addEventListener('keydown', switcherKeyEvent); - } - - function hideSwitcher() { - const overlayContainer = document.querySelector('.enhancer-panel--overlay-container'); - overlayContainer.removeEventListener('click', hideSwitcher); - document.removeEventListener('keydown', switcherKeyEvent); - - // Fade out - document.querySelector('.enhancer-panel--switcher').animate( - [ {opacity: 1}, {opacity: 0} ], - { duration: 200 } - ).onfinish = () => overlayContainer.remove(); - - if (!isLocked()) panel.addEventListener('mouseleave', hidePanel); - } - - function setPanelWidth(width) { - store().width = width; - panel.style.width = width + 'px'; - - if (isLocked()) { - container.style.width = width + 'px'; - frame.style.paddingRight = width + 'px'; - panel.style.right = 0; - } else { - container.style.width = 0; - frame.style.paddingRight = 0; - panel.style.right = width + 'px'; - } - } - - function enableResize() { - const handle = panel.querySelector('.enhancer-panel--resize div'); - handle.addEventListener('mousedown', initDrag); - - let startX, startWidth; - const div = createElement( - '
' - ); - - function initDrag(e) { - startX = e.clientX; - startWidth = store().width; - - panel.appendChild(div); - - // Set transitions - container.style.transition = 'width 50ms ease-in'; - panel.style.transition = 'width 50ms ease-in, right 50ms ease-in'; - frame.style.transition = 'padding-right 50ms ease-in'; - - handle.style.cursor = ''; - // Prevent panel from closing if unlocked - panel.removeEventListener('mouseleave', hidePanel); - - document.body.addEventListener('mousemove', drag); - document.body.addEventListener('mouseup', stopDrag); - } - - function drag(e) { - e.preventDefault(); - let width = startWidth + (startX - e.clientX); - if (width < 190) width = 190; - if (width > 480) width = 480; - setPanelWidth(width); - - if (curPanel.js && curPanel.js.onResize) { - curPanel.js.onResize(); - } - } - - function stopDrag() { - handle.style.cursor = 'col-resize'; - panel.removeChild(div); - - // Reset transitions - container.style.transition = - panel.style.transition = - frame.style.transition = ''; - - if (!isLocked()) panel.addEventListener('mouseleave', hidePanel); - - document.body.removeEventListener('mousemove', drag); - document.body.removeEventListener('mouseup', stopDrag); - } - } - - function isLocked() { - if (panel.dataset.locked === 'true') return true; - else return false; - } - - function switcherKeyEvent(e) { - e.stopPropagation(); - - if (e.key === 'Escape') return hideSwitcher(); - - const currentFocus = document.activeElement; - if ([' ', 'Enter'].includes(e.key)) return currentFocus.click(); - - const focusNext = () => { - const nextEl = currentFocus.nextElementSibling; - if (nextEl) nextEl.focus(); - else currentFocus.parentElement.firstElementChild.focus(); - } - const focusPrevious = () => { - const prevEl = currentFocus.previousElementSibling; - if (prevEl) prevEl.focus(); - else currentFocus.parentElement.lastElementChild.focus(); - } - - if (e.key === 'ArrowUp') focusPrevious(); - else if (e.key === 'ArrowDown') focusNext(); - else if (e.key === 'Tab') { - if (e.shiftKey) focusPrevious(); - else focusNext(); - - e.preventDefault(); - } - } - } - }); - - // INITIALIZATION FUNCTIONS - - async function initMod(mod) { - // load panel sites - if (mod.id === '0d541743-eb2c-4d77-83a8-3b2f5e8e5dff') { - panelMods = panelMods.filter(panelMod => panelMod !== mod); - return panelMods.push(...initPanelSites(mod)); - } - try { - if (typeof mod.panel === 'object') { - // html - mod.panel.html = await fs.readFile( - path.resolve(__dirname, `../${mod.dir}/${mod.panel.html}`) - ); - // name - if (!mod.panel.name) mod.panel.name = mod.name; - // icon - if (mod.panel.icon) { - const iconPath = path.resolve(__dirname, `../${mod.dir}/${mod.panel.icon}`); - if (await fs.pathExists(iconPath)) - mod.panel.icon = await fs.readFile(iconPath); - } else { - mod.panel.icon = mod.panel.name[0]; - } - // js - if (mod.panel.js) { - const jsPath = `../${mod.dir}/${mod.panel.js}`; - if (await fs.pathExists(path.resolve(__dirname, jsPath))) { - mod.panel.js = require(jsPath)(loadStore(mod), __exports); - } - } - } else if (typeof mod.panel === 'string') { - mod.panel.icon = mod.name[0]; - mod.panel.html = await fs.readFile( - path.resolve(__dirname, `../${mod.dir}/${mod.panel}`) - ); - } else throw Error; - } catch (err) { - console.log('invalid panel mod: ' + mod.name); - panelMods = panelMods.filter(panelMod => panelMod !== mod); - } - } - - function initPanelSites(mod) { - let panelSites = []; - const sitesPath = store(mod.id).sites; - if (sitesPath) { - try { - const sites = require(sitesPath); - const invalid = false; - const sitePanelJs = require('../panel-sites/panel.js')(loadStore(mod), __exports); - - const frameUrl = function(url, mobile) { - if (!/(^https?:\/\/)/.test(url)) url = 'https://' + url; - return ``; - } - - sites.forEach(site => { - if (site.url && site.name) { - - // get url and icon - const iframe = frameUrl(site.url, site.mobile); - const icon = ``; - - const panelMod = { - id: `${mod.id}-${site.url}`, - panel: { - name: site.name, - html: iframe, - icon: icon, - js: sitePanelJs, - fullHeight: true, - reload: true, - }, - } - panelSites.push(panelMod); - } else invalid = true; - }); - if (invalid) throw Error; - } - catch (err) { - console.log('panel site error'); - } - } - return panelSites; - } - - function loadStore(mod) { - return (...args) => { - if (!args.length) return store(mod.id, mod.defaults); - if (args.length === 1 && typeof args[0] === 'object') - return store(mod.id, { ...mod.defaults, ...args[0] }); - const other_mod = modules.find((m) => m.id === args[0]); - return store(args[0], { - ...(other_mod ? other_mod.defaults : {}), - ...(args[1] || {}) - }) - } - } - }, - }, -}; diff --git a/temp/tabs/mod.js b/temp/tabs/mod.js deleted file mode 100644 index 7e9d7dc..0000000 --- a/temp/tabs/mod.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * tabs - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -'use strict'; - -// this is just a pseudo mod to "separate" the options -// from the core module - the core still handles actually -// making it work. -module.exports = { - id: 'e1692c29-475e-437b-b7ff-3eee872e1a42', - tags: ['core', 'extension'], - name: 'tabs', - desc: 'have multiple notion pages open in a single window.', - version: '0.1.0', - author: 'dragonwocky', - options: [ - { - key: 'select_modifier', - label: - 'tab select modifier (key+1, +2, +3, ... +9 and key+left/right arrows):', - type: 'select', - value: [ - 'Alt', - 'Command', - 'Control', - 'Super', - 'Alt+Shift', - 'Command+Shift', - 'Control+Shift', - 'Super+Shift', - ], - }, - { - key: 'new_tab', - label: 'new tab keybinding:', - type: 'input', - value: 'CommandOrControl+T', - }, - { - key: 'close_tab', - label: 'close tab keybinding:', - type: 'input', - value: 'CommandOrControl+W', - }, - ], -}; diff --git a/temp/tweaks/app.css b/temp/tweaks/app.css deleted file mode 100644 index 6811304..0000000 --- a/temp/tweaks/app.css +++ /dev/null @@ -1,62 +0,0 @@ -/* - * tweaks - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -[data-tweaks*='[responsive_breakpoint]'] - .notion-column_list-block - [style='display: flex;'] - > div { - width: 100% !important; -} -[data-tweaks*='[responsive_breakpoint]'] - .notion-column_list-block - [style='display: flex;'] { - flex-direction: column !important; -} -[data-tweaks*='[responsive_breakpoint]'] .notion-app-inner { - --theme_dark--page_normal-width: 100%; - --theme_dark--page-padding: calc(48px + env(safe-area-inset-left)); - --theme_light--page_normal-width: 100%; - --theme_light--page-padding: calc(48px + env(safe-area-inset-left)); -} - -[data-tweaks*='[snappy_transitions]'] * { - animation-duration: 0s !important; - transition-duration: 0s !important; -} -[data-tweaks*='[snappy_transitions]'] .notion-selectable-halo { - opacity: 1 !important; -} - -[data-tweaks*='[hide_help]'] .notion-help-button { - display: none !important; -} - -[data-tweaks*='[thicker_bold]'] - .notion-page-content - span[style*='font-weight:600'] { - font-weight: 700 !important; -} - -[data-tweaks*='[spaced_lines]'] { - --theme_dark--text-block_line-height: 1.65; - --theme_dark--text-block_margin-top: 0.75em; - --theme_light--text-block_line-height: 1.65; - --theme_light--text-block_margin-top: 0.75em; -} - -[data-tweaks*='[condensed_bullets]'] - .notion-selectable.notion-bulleted_list-block { - line-height: 1.1 !important; - margin-top: -1.5px !important; - margin-bottom: -1.5px !important; -} - -[data-tweaks*='[scroll_db_toolbars]'] .notion-collection_view-block > [style*=" height: 42px"] { - overflow-x: auto !important; -} -[data-tweaks*='[scroll_db_toolbars]'] .notion-collection_view-block > [style*=" height: 42px"]::-webkit-scrollbar { - display: none; -} diff --git a/temp/tweaks/mod.js b/temp/tweaks/mod.js deleted file mode 100644 index daa5a67..0000000 --- a/temp/tweaks/mod.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - * tweaks - * (c) 2020 dragonwocky (https://dragonwocky.me/) - * under the MIT license - */ - -'use strict'; - -module.exports = { - id: 'cf8a7b27-5a4c-4d45-a4cb-1d2bbc9e9014', - alwaysActive: true, - tags: ['core', 'extension'], - name: 'tweaks', - desc: 'common style/layout changes.', - version: '0.1.0', - author: 'dragonwocky', - options: [ - { - key: 'dragarea_height', - label: 'height of frameless dragarea:', - desc: `the rectangle added at the top of a window in "integrated titlebar" mode,\ - used to drag/move the window.`, - type: 'input', - value: 15, - platformOverwrite: { - darwin: 0, - }, - }, - { - key: 'responsive_breakpoint', - label: 'width to wrap columns at:', - desc: `the size in pixels below which in-page columns are resized to appear\ - full width so content isn't squished.`, - type: 'input', - value: 600, - }, - { - key: 'smooth_scrollbars', - label: 'integrated scrollbars', - desc: - "use scrollbars that fit better into notion's ui instead of the default chrome ones.", - type: 'toggle', - value: true, - }, - { - key: 'snappy_transitions', - label: 'snappy transitions', - type: 'toggle', - value: false, - }, - { - key: 'thicker_bold', - label: 'thicker bold text', - type: 'toggle', - value: true, - }, - { - key: 'spaced_lines', - label: 'more readable line spacing', - type: 'toggle', - value: false, - }, - { - key: 'hide_help', - label: 'hide help button', - type: 'toggle', - value: false, - }, - { - key: 'condensed_bullets', - label: 'condense bullet points', - desc: - 'makes bullet point blocks closer together and have tighter line spacing', - type: 'toggle', - value: false, - }, - { - key: 'scroll_db_toolbars', - label: 'scroll database toolbars', - desc: - 'allows scrolling database toolbars horizontally if\ - part of the toolbar is hidden (hold shift while scrolling)', - type: 'toggle', - value: true, - }, - ], - hacks: { - 'renderer/preload.js': (store, __exports) => { - document.addEventListener('readystatechange', (event) => { - if (document.readyState !== 'complete') return false; - document.body.dataset.tweaks = [ - 'smooth_scrollbars', - 'snappy_transitions', - 'thicker_bold', - 'spaced_lines', - 'hide_help', - 'condensed_bullets', - 'scroll_db_toolbars', - ] - .filter((tweak) => store()[tweak]) - .map((tweak) => `[${tweak}]`) - .join(''); - document.documentElement.style.setProperty( - '--configured--dragarea_height', - `${store().dragarea_height + 2}px` - ); - const addResponsiveBreakpoint = () => { - document.body.dataset.tweaks = document.body.dataset.tweaks.replace( - /\[responsive_breakpoint\]/g, - '' - ); - if (window.outerWidth <= store().responsive_breakpoint) - document.body.dataset.tweaks += '[responsive_breakpoint]'; - }; - window.addEventListener('resize', addResponsiveBreakpoint); - addResponsiveBreakpoint(); - }); - }, - }, -}; diff --git a/yarn.lock b/yarn.lock index 0c35d95..a5954d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,22 +3,22 @@ "@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/node@*": - version "14.14.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae" - integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ== + version "16.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" + integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== ansi-styles@^4.1.0: version "4.3.0" @@ -27,10 +27,10 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -asar@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.0.3.tgz#1fef03c2d6d2de0cbad138788e4f7ae03b129c7b" - integrity sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw== +asar@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473" + integrity sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ== dependencies: chromium-pickle-js "^0.2.0" commander "^5.0.0" @@ -40,9 +40,9 @@ asar@^3.0.3: "@types/glob" "^7.1.1" balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== brace-expansion@^1.1.7: version "1.1.11" @@ -52,10 +52,10 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -93,9 +93,9 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4"