From 6b13b40a75c48d66015beca9605f203e1d5b67ab Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Mon, 26 Oct 2026 10:12:30 +0100 Subject: [PATCH] docs(theme): add reusable theme.json palette recipes --- THIRD-PARTY-NOTICES.md | 6 ++ docs/CUSTOM-THEMES.md | 40 +++++++++- docs/themes/NOTICE.md | 148 ++++++++++++++++++++++++++++++++++++ docs/themes/catppuccin.json | 24 ++++++ docs/themes/dracula.json | 24 ++++++ docs/themes/monokai.json | 13 ++++ docs/themes/nord.json | 24 ++++++ 7 files changed, 277 insertions(+), 2 deletions(-) create mode 100644 docs/themes/NOTICE.md create mode 100644 docs/themes/catppuccin.json create mode 100644 docs/themes/dracula.json create mode 100644 docs/themes/monokai.json create mode 100644 docs/themes/nord.json diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 7e00ed2c8..ac840133b 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -112,3 +112,9 @@ app as its payload. Filee 1.x's installer was built with Inno Setup, which is no The GitHub Sponsors, Patreon, Ko-fi and PayPal names and logos are trademarks of their owners and are used only to link to each service. + +## Documentation theme examples + +The optional JSON recipes in `docs/themes/` adapt palette data from Catppuccin, Nord, Dracula and VS Code's classic +Monokai theme. Their source links, colour adjustments and copyright/license notices are in +[docs/themes/NOTICE.md](docs/themes/NOTICE.md). These are documentation examples, not runtime dependencies. diff --git a/docs/CUSTOM-THEMES.md b/docs/CUSTOM-THEMES.md index 7e6950fc5..1abb71330 100644 --- a/docs/CUSTOM-THEMES.md +++ b/docs/CUSTOM-THEMES.md @@ -36,8 +36,44 @@ Filee's own colours can be replaced with a `theme.json` file in the folder that Keep `text` and `textSecondary` readable on `page`, `surface` and `surfaceAlt`: they are drawn on all three. Keep `dark` colours dark and `light` colours light. In Filee's default Soft style, text boxes, -drop-downs, check boxes, menus, tooltips and plain buttons come from Avalonia's Fluent theme and -keep its standard light/dark look; they do not follow `theme.json`. Under the Material You style, +drop-downs, check boxes, menus and tooltips come from Avalonia's Fluent theme and keep its standard +light/dark look; they do not follow `theme.json`. Plain buttons use `surface` for their normal background +and `surfaceAlt` on hover. Under the Material You style, text boxes, drop-downs and check boxes follow the dynamic tonal surface colors and corner radii from `theme.json` and the accent colour. A white `page` in the `dark` variant would put white-on-white controls on it. + +## Ready-to-use examples + +These examples adapt familiar palettes to Filee's surface, text and status colours. The accent colour stays the one +you chose in **Settings > Theme**, and the control-style limits above still apply. + +| Example | Light | Dark | +|---|---|---| +| [Catppuccin](themes/catppuccin.json) | Latte | Mocha | +| [Nord](themes/nord.json) | Snow Storm-based colours | Polar Night-based colours | +| [Dracula](themes/dracula.json) | Alucard Classic | Dracula Classic | +| [Monokai](themes/monokai.json) | Filee's built-in light colours | Classic Monokai | + +They are application-specific adaptations, not official ports. Some secondary text and status colours are adjusted +for readability on the example surfaces; see the [sources, adjustments and license notices](themes/NOTICE.md). +Accent-derived colours, focus and other control states still depend on your settings and style. + +### Apply an example + +1. Quit Filee, including its tray/menu-bar process. +2. Find your data folder using the paths at the top of this page. If `theme.json` already exists, save a copy under + another name outside that folder before replacing it. +3. Open one of the JSON links above, choose **Raw**, and save the JSON as `theme.json` in your data folder. Make sure + the file is named `theme.json`, rather than `theme.json.txt`. +4. Start Filee. Choose **Light**, **Dark** or **System** in **Settings > Theme** to use the corresponding variant. + +Each example replaces the whole `theme.json` file. To keep parts of your own theme, merge the desired colour entries +into its existing `light` and `dark` objects instead. Monokai defines only `dark`: in Light mode, or when System +follows a light appearance, Filee uses its built-in light colours. + +### Restore your previous colours + +Quit Filee and move the example `theme.json` out of the data folder. To restore your previous custom theme, put your +backup back as `theme.json`; to use Filee's built-in colours, leave that file absent. Start Filee again. The accent +and your other appearance settings stay as chosen in **Settings > Theme**. diff --git a/docs/themes/NOTICE.md b/docs/themes/NOTICE.md new file mode 100644 index 000000000..884fb52c8 --- /dev/null +++ b/docs/themes/NOTICE.md @@ -0,0 +1,148 @@ +# Theme example sources and notices + +The JSON files in this folder map these palettes to Filee's existing colour roles. They are optional +documentation examples. The light/dark mappings and foreground adjustments are Filee-specific adaptations. + +| Example | Palette source (fixed revision) | License notice | +|---|---|---| +| [Catppuccin](catppuccin.json) | [catppuccin/palette `07d02aa1`](https://raw.githubusercontent.com/catppuccin/palette/07d02aa110ef9eb7e7427afca5c73ba9cf7f8ebd/palette.json) | [MIT](https://raw.githubusercontent.com/catppuccin/palette/07d02aa110ef9eb7e7427afca5c73ba9cf7f8ebd/LICENSE) | +| [Nord](nord.json) | [nordtheme/nord `1cef7160`](https://raw.githubusercontent.com/nordtheme/nord/1cef71605416a222e57225b544540ce0fcec18d4/src/nord.scss) | [MIT](https://raw.githubusercontent.com/nordtheme/nord/1cef71605416a222e57225b544540ce0fcec18d4/license) | +| [Dracula / Alucard Classic](dracula.json) | [dracula/draculatheme.com `88fbf0b3`](https://raw.githubusercontent.com/dracula/draculatheme.com/88fbf0b34e53d8f785546da3c2246b7edb73931e/content/spec.mdx) | [MIT](https://raw.githubusercontent.com/dracula/template/d36c038a7df2e0bd7567f539e7a5816df8145057/LICENSE) | +| [Classic Monokai (VS Code)](monokai.json) | [microsoft/vscode `a383e086`](https://raw.githubusercontent.com/microsoft/vscode/a383e08626828ceb9c32f45f4a2940070a2f27f1/extensions/theme-monokai/themes/monokai-color-theme.json) | [MIT](https://raw.githubusercontent.com/microsoft/vscode/a383e08626828ceb9c32f45f4a2940070a2f27f1/LICENSE.txt) | + +Nord's surface roles follow its [colour guidelines](https://www.nordtheme.com/docs/colors-and-palettes/). +Dracula's values follow its specification; the MIT notice below is from its community-port template. +The Monokai example uses the classic palette from VS Code, without Monokai Pro assets. + +## Foreground adjustments + +The following secondary/status colours differ from the source palettes. Each is blended towards white +in the dark variant, or black in the light variant, in 1% steps until its contrast is at least 4.5:1 +on all three example backgrounds (`page`, `surface`, `surfaceAlt`). Other colours are direct role mappings. +This covers these foreground/background pairs, not all controls, accent-derived colours or user edits. + +| Example | Variant | Role | Source | Adapted | +|---|---|---|---|---| +| catppuccin | light | `danger` | `#D20F39` | `#C50E36` | +| catppuccin | light | `success` | `#40A02B` | `#2D701E` | +| catppuccin | light | `warning` | `#DF8E1D` | `#8A5812` | +| nord | light | `danger` | `#BF616A` | `#954C53` | +| nord | light | `success` | `#A3BE8C` | `#56654A` | +| nord | light | `warning` | `#EBCB8B` | `#6E5F41` | +| nord | dark | `danger` | `#BF616A` | `#DFB0B4` | +| nord | dark | `success` | `#A3BE8C` | `#ABC496` | +| dracula | light | `danger` | `#DE5735` | `#B2462A` | +| dracula | light | `success` | `#089108` | `#077A07` | +| dracula | light | `warning` | `#A39514` | `#746A0E` | +| dracula | dark | `textSecondary` | `#6272A4` | `#96A1C2` | +| dracula | dark | `danger` | `#DE5735` | `#E7866E` | +| dracula | dark | `success` | `#089108` | `#57B457` | +| dracula | dark | `warning` | `#A39514` | `#AFA333` | +| monokai | dark | `textSecondary` | `#90908A` | `#AEAEAA` | +| monokai | dark | `danger` | `#F92672` | `#FC8AB3` | + +## License notices + +### Catppuccin + +```text +MIT License + +Copyright (c) 2021 Catppuccin + +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. +``` + +### Nord + +```text +MIT License (MIT) + +Copyright (c) 2016-present Sven Greb (https://www.svengreb.de) + +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. +``` + +### Dracula + +```text +MIT License + +Copyright (c) 2023 Dracula Theme + +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. +``` + +### VS Code + +```text +MIT License + +Copyright (c) 2015 - present Microsoft Corporation + +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. +``` diff --git a/docs/themes/catppuccin.json b/docs/themes/catppuccin.json new file mode 100644 index 000000000..edcf31ec0 --- /dev/null +++ b/docs/themes/catppuccin.json @@ -0,0 +1,24 @@ +{ + "light": { + "page": "#E6E9EF", + "surface": "#EFF1F5", + "surfaceAlt": "#DCE0E8", + "border": "#9CA0B0", + "text": "#4C4F69", + "textSecondary": "#5C5F77", + "danger": "#C50E36", + "success": "#2D701E", + "warning": "#8A5812" + }, + "dark": { + "page": "#181825", + "surface": "#1E1E2E", + "surfaceAlt": "#313244", + "border": "#45475A", + "text": "#CDD6F4", + "textSecondary": "#BAC2DE", + "danger": "#F38BA8", + "success": "#A6E3A1", + "warning": "#F9E2AF" + } +} diff --git a/docs/themes/dracula.json b/docs/themes/dracula.json new file mode 100644 index 000000000..8c7126289 --- /dev/null +++ b/docs/themes/dracula.json @@ -0,0 +1,24 @@ +{ + "light": { + "page": "#FFFBEB", + "surface": "#EFEDDC", + "surfaceAlt": "#ECE9DF", + "border": "#CFCFDE", + "text": "#1F1F1F", + "textSecondary": "#6C664B", + "danger": "#B2462A", + "success": "#077A07", + "warning": "#746A0E" + }, + "dark": { + "page": "#21222C", + "surface": "#282A36", + "surfaceAlt": "#343746", + "border": "#6272A4", + "text": "#F8F8F2", + "textSecondary": "#96A1C2", + "danger": "#E7866E", + "success": "#57B457", + "warning": "#AFA333" + } +} diff --git a/docs/themes/monokai.json b/docs/themes/monokai.json new file mode 100644 index 000000000..4c7938515 --- /dev/null +++ b/docs/themes/monokai.json @@ -0,0 +1,13 @@ +{ + "dark": { + "page": "#1E1F1C", + "surface": "#272822", + "surfaceAlt": "#414339", + "border": "#75715E", + "text": "#F8F8F2", + "textSecondary": "#AEAEAA", + "danger": "#FC8AB3", + "success": "#A6E22E", + "warning": "#E6DB74" + } +} diff --git a/docs/themes/nord.json b/docs/themes/nord.json new file mode 100644 index 000000000..2d3cacc16 --- /dev/null +++ b/docs/themes/nord.json @@ -0,0 +1,24 @@ +{ + "light": { + "page": "#ECEFF4", + "surface": "#E5E9F0", + "surfaceAlt": "#D8DEE9", + "border": "#4C566A", + "text": "#2E3440", + "textSecondary": "#4C566A", + "danger": "#954C53", + "success": "#56654A", + "warning": "#6E5F41" + }, + "dark": { + "page": "#2E3440", + "surface": "#3B4252", + "surfaceAlt": "#434C5E", + "border": "#4C566A", + "text": "#ECEFF4", + "textSecondary": "#D8DEE9", + "danger": "#DFB0B4", + "success": "#ABC496", + "warning": "#EBCB8B" + } +}