@kidthales/tol-palettes 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +36 -0
- package/NOTICE +58 -0
- package/README.md +182 -2
- package/data/schemes/banded-12.json +49 -0
- package/data/schemes/banded-16.json +61 -0
- package/data/schemes/banded-20.json +73 -0
- package/data/schemes/bright.json +48 -0
- package/data/schemes/burd.json +43 -0
- package/data/schemes/dark.json +45 -0
- package/data/schemes/groundcover.json +54 -0
- package/data/schemes/high-contrast.json +32 -0
- package/data/schemes/incandescent.json +46 -0
- package/data/schemes/iridescent.json +85 -0
- package/data/schemes/light.json +56 -0
- package/data/schemes/medium-contrast.json +44 -0
- package/data/schemes/muted.json +61 -0
- package/data/schemes/nightfall.json +78 -0
- package/data/schemes/pale.json +33 -0
- package/data/schemes/prgn.json +43 -0
- package/data/schemes/rainbow-discrete.json +430 -0
- package/data/schemes/rainbow-smooth.json +143 -0
- package/data/schemes/sunset.json +49 -0
- package/data/schemes/vibrant.json +48 -0
- package/data/schemes/whorbr.json +44 -0
- package/data/schemes/ylorbr.json +43 -0
- package/dist/aseprite/banded-12.gpl +21 -0
- package/dist/aseprite/banded-16.gpl +25 -0
- package/dist/aseprite/banded-20.gpl +29 -0
- package/dist/aseprite/bright.gpl +17 -0
- package/dist/aseprite/burd.gpl +18 -0
- package/dist/aseprite/dark.gpl +20 -0
- package/dist/aseprite/groundcover.gpl +23 -0
- package/dist/aseprite/high-contrast.gpl +13 -0
- package/dist/aseprite/incandescent.gpl +20 -0
- package/dist/aseprite/iridescent.gpl +32 -0
- package/dist/aseprite/light.gpl +19 -0
- package/dist/aseprite/medium-contrast.gpl +16 -0
- package/dist/aseprite/muted.gpl +20 -0
- package/dist/aseprite/nightfall.gpl +26 -0
- package/dist/aseprite/pale.gpl +16 -0
- package/dist/aseprite/prgn.gpl +18 -0
- package/dist/aseprite/rainbow-discrete.gpl +38 -0
- package/dist/aseprite/rainbow-smooth.gpl +43 -0
- package/dist/aseprite/sunset.gpl +20 -0
- package/dist/aseprite/vibrant.gpl +17 -0
- package/dist/aseprite/whorbr.gpl +18 -0
- package/dist/aseprite/ylorbr.gpl +18 -0
- package/dist/css/banded-12.css +23 -0
- package/dist/css/banded-16.css +27 -0
- package/dist/css/banded-20.css +31 -0
- package/dist/css/bright.css +25 -0
- package/dist/css/burd.css +21 -0
- package/dist/css/dark.css +21 -0
- package/dist/css/groundcover.css +24 -0
- package/dist/css/high-contrast.css +17 -0
- package/dist/css/incandescent.css +23 -0
- package/dist/css/iridescent.css +35 -0
- package/dist/css/light.css +29 -0
- package/dist/css/medium-contrast.css +23 -0
- package/dist/css/muted.css +31 -0
- package/dist/css/nightfall.css +38 -0
- package/dist/css/pale.css +17 -0
- package/dist/css/prgn.css +21 -0
- package/dist/css/rainbow-discrete.css +316 -0
- package/dist/css/rainbow-smooth.css +46 -0
- package/dist/css/sunset.css +23 -0
- package/dist/css/tol.css +732 -0
- package/dist/css/vibrant.css +25 -0
- package/dist/css/whorbr.css +21 -0
- package/dist/css/ylorbr.css +21 -0
- package/dist/godot/addons/tol_palettes/banded-12.tres +10 -0
- package/dist/godot/addons/tol_palettes/banded-16.tres +10 -0
- package/dist/godot/addons/tol_palettes/banded-20.tres +10 -0
- package/dist/godot/addons/tol_palettes/bright.tres +10 -0
- package/dist/godot/addons/tol_palettes/burd.tres +10 -0
- package/dist/godot/addons/tol_palettes/dark.tres +10 -0
- package/dist/godot/addons/tol_palettes/groundcover.tres +10 -0
- package/dist/godot/addons/tol_palettes/high-contrast.tres +10 -0
- package/dist/godot/addons/tol_palettes/incandescent.tres +10 -0
- package/dist/godot/addons/tol_palettes/iridescent.tres +10 -0
- package/dist/godot/addons/tol_palettes/light.tres +10 -0
- package/dist/godot/addons/tol_palettes/medium-contrast.tres +10 -0
- package/dist/godot/addons/tol_palettes/muted.tres +10 -0
- package/dist/godot/addons/tol_palettes/nightfall.tres +10 -0
- package/dist/godot/addons/tol_palettes/pale.tres +10 -0
- package/dist/godot/addons/tol_palettes/plugin.cfg +12 -0
- package/dist/godot/addons/tol_palettes/prgn.tres +10 -0
- package/dist/godot/addons/tol_palettes/rainbow-discrete.tres +10 -0
- package/dist/godot/addons/tol_palettes/rainbow-smooth.tres +10 -0
- package/dist/godot/addons/tol_palettes/sunset.tres +10 -0
- package/dist/godot/addons/tol_palettes/tol_palettes.gd +301 -0
- package/dist/godot/addons/tol_palettes/vibrant.tres +10 -0
- package/dist/godot/addons/tol_palettes/whorbr.tres +10 -0
- package/dist/godot/addons/tol_palettes/ylorbr.tres +10 -0
- package/dist/godot/banded-12.tres +10 -0
- package/dist/godot/banded-16.tres +10 -0
- package/dist/godot/banded-20.tres +10 -0
- package/dist/godot/bright.tres +10 -0
- package/dist/godot/burd.tres +10 -0
- package/dist/godot/dark.tres +10 -0
- package/dist/godot/groundcover.tres +10 -0
- package/dist/godot/high-contrast.tres +10 -0
- package/dist/godot/incandescent.tres +10 -0
- package/dist/godot/iridescent.tres +10 -0
- package/dist/godot/light.tres +10 -0
- package/dist/godot/medium-contrast.tres +10 -0
- package/dist/godot/muted.tres +10 -0
- package/dist/godot/nightfall.tres +10 -0
- package/dist/godot/pale.tres +10 -0
- package/dist/godot/prgn.tres +10 -0
- package/dist/godot/rainbow-discrete.tres +10 -0
- package/dist/godot/rainbow-smooth.tres +10 -0
- package/dist/godot/sunset.tres +10 -0
- package/dist/godot/tol_palettes.gd +301 -0
- package/dist/godot/vibrant.tres +10 -0
- package/dist/godot/whorbr.tres +10 -0
- package/dist/godot/ylorbr.tres +10 -0
- package/dist/gpl/banded-12.gpl +20 -0
- package/dist/gpl/banded-16.gpl +24 -0
- package/dist/gpl/banded-20.gpl +28 -0
- package/dist/gpl/bright.gpl +16 -0
- package/dist/gpl/burd.gpl +17 -0
- package/dist/gpl/dark.gpl +19 -0
- package/dist/gpl/groundcover.gpl +22 -0
- package/dist/gpl/high-contrast.gpl +12 -0
- package/dist/gpl/incandescent.gpl +19 -0
- package/dist/gpl/iridescent.gpl +31 -0
- package/dist/gpl/light.gpl +18 -0
- package/dist/gpl/medium-contrast.gpl +15 -0
- package/dist/gpl/muted.gpl +19 -0
- package/dist/gpl/nightfall.gpl +25 -0
- package/dist/gpl/pale.gpl +15 -0
- package/dist/gpl/prgn.gpl +17 -0
- package/dist/gpl/rainbow-discrete.gpl +37 -0
- package/dist/gpl/rainbow-smooth.gpl +42 -0
- package/dist/gpl/sunset.gpl +19 -0
- package/dist/gpl/vibrant.gpl +16 -0
- package/dist/gpl/whorbr.gpl +17 -0
- package/dist/gpl/ylorbr.gpl +17 -0
- package/dist/js/index.d.ts +92 -0
- package/dist/js/index.js +1845 -0
- package/dist/json/schemes.json +1613 -0
- package/dist/py/tol_palettes.py +1092 -0
- package/package.json +82 -4
- package/schema/scheme.schema.json +90 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, kidthales
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Note: Colour values derived from Paul Tol's `tol_colors.py` (version 2022.10)
|
|
7
|
+
are Copyright (c) 2022, Paul Tol, under the 3-Clause BSD License reproduced in
|
|
8
|
+
NOTICE. This project is independent and is not affiliated with or endorsed by
|
|
9
|
+
Paul Tol.
|
|
10
|
+
|
|
11
|
+
Redistribution and use in source and binary forms, with or without
|
|
12
|
+
modification, are permitted provided that the following conditions are met:
|
|
13
|
+
|
|
14
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
15
|
+
list of conditions and the following disclaimer, as well as the third-party
|
|
16
|
+
notices in NOTICE.
|
|
17
|
+
|
|
18
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
19
|
+
this list of conditions and the following disclaimer in the documentation
|
|
20
|
+
and/or other materials provided with the distribution, as well as the
|
|
21
|
+
third-party notices in NOTICE.
|
|
22
|
+
|
|
23
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
24
|
+
contributors may be used to endorse or promote products derived from
|
|
25
|
+
this software without specific prior written permission.
|
|
26
|
+
|
|
27
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
28
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
29
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
30
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
31
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
32
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
33
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
34
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
35
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
36
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
tol-palettes: third-party notices
|
|
2
|
+
================================
|
|
3
|
+
|
|
4
|
+
This project is independent. It is not affiliated with or endorsed by Paul Tol.
|
|
5
|
+
The name "Paul Tol" is used only to describe the source of the colour values.
|
|
6
|
+
|
|
7
|
+
Policy: this project stores colour VALUES only, with attribution. It does not
|
|
8
|
+
copy the notes' prose, figures, the PDF or the LaTeX template.
|
|
9
|
+
|
|
10
|
+
Sources
|
|
11
|
+
-------
|
|
12
|
+
1. Paul Tol's notes, "Colour schemes and templates"
|
|
13
|
+
https://sronpersonalpages.nl/~pault/
|
|
14
|
+
2. tol_colors.py (version 2022.10)
|
|
15
|
+
https://sronpersonalpages.nl/~pault/data/tol_colors.py
|
|
16
|
+
Its header reads: "Copyright (c) 2022, Paul Tol. All rights reserved.
|
|
17
|
+
License: Standard 3-clause BSD". The header names the licence but does not
|
|
18
|
+
reproduce its text, so the standard 3-clause BSD text is reproduced below.
|
|
19
|
+
3. Colour schemes and templates (PDF)
|
|
20
|
+
https://sronpersonalpages.nl/~pault/data/colourschemes.pdf
|
|
21
|
+
|
|
22
|
+
Which values come from where is recorded per scheme in data/schemes/*.json
|
|
23
|
+
(the "source" field). Values that also appear in tol_colors.py are covered by
|
|
24
|
+
the notice below. Values that appear only on the notes page (for example dark,
|
|
25
|
+
pale, incandescent, banded and groundcover) are published as plain colour
|
|
26
|
+
values with attribution to the notes page; their terms have not been
|
|
27
|
+
confirmed with the author.
|
|
28
|
+
|
|
29
|
+
BSD 3-Clause License (applies to values derived from tol_colors.py)
|
|
30
|
+
-------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
Copyright (c) 2022, Paul Tol
|
|
33
|
+
All rights reserved.
|
|
34
|
+
|
|
35
|
+
Redistribution and use in source and binary forms, with or without
|
|
36
|
+
modification, are permitted provided that the following conditions are met:
|
|
37
|
+
|
|
38
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
39
|
+
list of conditions and the following disclaimer.
|
|
40
|
+
|
|
41
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
42
|
+
this list of conditions and the following disclaimer in the documentation
|
|
43
|
+
and/or other materials provided with the distribution.
|
|
44
|
+
|
|
45
|
+
3. Neither the name of the copyright holder nor the names of its contributors
|
|
46
|
+
may be used to endorse or promote products derived from this software
|
|
47
|
+
without specific prior written permission.
|
|
48
|
+
|
|
49
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
50
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
51
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
52
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
53
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
54
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
55
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
56
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
57
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
58
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,183 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @kidthales/tol-palettes
|
|
2
|
+
|
|
3
|
+
[](https://github.com/kidthales/tol-palettes/actions/workflows/ci.yml)
|
|
4
|
+
[](https://tol-palettes.kidthales.com)
|
|
5
|
+
[](https://www.npmjs.com/package/@kidthales/tol-palettes)
|
|
6
|
+
[](https://pypi.org/project/tol-palettes/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](package.json)
|
|
9
|
+
[](CITATION.cff)
|
|
10
|
+
[](CODE_OF_CONDUCT.md)
|
|
11
|
+
|
|
12
|
+
Colour scheme data inspired by and sourced from [Paul Tol's notes](https://sronpersonalpages.nl/~pault/), with multi-environment generators for **CSS**, **JavaScript / TypeScript**, **Python (`matplotlib`)**, **Godot 4.x**, and **GIMP / Aseprite**.
|
|
13
|
+
|
|
14
|
+
> *Independent project: not affiliated with or endorsed by Paul Tol.*
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Scope & Policy
|
|
19
|
+
|
|
20
|
+
- **Values only, with attribution.** The project stores colour values and structural lookup rules (`data/schemes/*.json`); it does not copy the notes' prose, figures, the PDF, or the LaTeX template.
|
|
21
|
+
- **No invented names.** A colour name appears only when the official `tol_colors.py` module provides one (the 6 qualitative schemes: `bright`, `high-contrast`, `vibrant`, `muted`, `medium-contrast`, `light`).
|
|
22
|
+
- **Single source of truth.** One hand-verified JSON file per scheme (22 schemes total) is the only canonical data layer; every environment output in `dist/` is deterministically generated from it.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Installation & Quickstart
|
|
27
|
+
|
|
28
|
+
### Installation
|
|
29
|
+
|
|
30
|
+
#### npm (Public Registry — Zero Config)
|
|
31
|
+
|
|
32
|
+
Install directly from the npm public registry:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install @kidthales/tol-palettes
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
#### GitHub Packages (Alternative)
|
|
39
|
+
|
|
40
|
+
To install from GitHub Packages instead, configure the scope in your `.npmrc`:
|
|
41
|
+
|
|
42
|
+
```ini
|
|
43
|
+
@kidthales:registry=https://npm.pkg.github.com
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Then install:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install @kidthales/tol-palettes
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
#### PyPI (Python Package)
|
|
54
|
+
|
|
55
|
+
Install directly from PyPI into your virtualenv or project:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pip install tol-palettes
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
With optional `matplotlib` colormap integration:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pip install "tol-palettes[matplotlib]"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### CDN Delivery (jsDelivr / unpkg)
|
|
68
|
+
|
|
69
|
+
You can load CSS stylesheets, JavaScript modules, or JSON data directly in the browser via CDN without a build step:
|
|
70
|
+
|
|
71
|
+
**CSS Stylesheets:**
|
|
72
|
+
```html
|
|
73
|
+
<!-- Full 22-scheme bundle (jsDelivr) -->
|
|
74
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@kidthales/tol-palettes/dist/css/tol.css">
|
|
75
|
+
|
|
76
|
+
<!-- Individual scheme (e.g. bright palette via unpkg) -->
|
|
77
|
+
<link rel="stylesheet" href="https://unpkg.com/@kidthales/tol-palettes/dist/css/bright.css">
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**JavaScript / ESM:**
|
|
81
|
+
```html
|
|
82
|
+
<script type="module">
|
|
83
|
+
import { bright, interpolate } from "https://cdn.jsdelivr.net/npm/@kidthales/tol-palettes/+esm";
|
|
84
|
+
console.log(bright.colors);
|
|
85
|
+
</script>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Raw JSON Data:**
|
|
89
|
+
```text
|
|
90
|
+
https://cdn.jsdelivr.net/npm/@kidthales/tol-palettes/dist/json/schemes.json
|
|
91
|
+
https://unpkg.com/@kidthales/tol-palettes/dist/json/schemes.json
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
> [!NOTE]
|
|
95
|
+
> **SemVer 2.0.0 Pre-release**: Per SemVer 2.0.0 §4, versions in the `0.y.z` range denote initial development releases with evolving APIs. True stable releases begin at `v1.0.0`.
|
|
96
|
+
|
|
97
|
+
### JavaScript / TypeScript (ESM)
|
|
98
|
+
```ts
|
|
99
|
+
import { bright, muted, interpolate, discreteRainbow } from '@kidthales/tol-palettes';
|
|
100
|
+
|
|
101
|
+
console.log(bright.colors); // [{ hex: '#4477AA', name: 'blue' }, ...]
|
|
102
|
+
console.log(interpolate('sunset', 0.5)); // '#EAECCC'
|
|
103
|
+
console.log(discreteRainbow(5)); // ['#1965B0', '#7BAFDE', '#4EB265', '#F7F056', '#DC050C']
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### CSS Custom Properties (`--tol-*`)
|
|
107
|
+
```css
|
|
108
|
+
/* Import an individual scheme or the full 22-scheme bundle */
|
|
109
|
+
@import '@kidthales/tol-palettes/css/bright.css';
|
|
110
|
+
@import '@kidthales/tol-palettes/css/tol.css';
|
|
111
|
+
|
|
112
|
+
.callout {
|
|
113
|
+
background-color: var(--tol-pale-0);
|
|
114
|
+
color: var(--tol-dark-3);
|
|
115
|
+
border-left: 4px solid var(--tol-bright-blue);
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Python (`tol_palettes.py`)
|
|
120
|
+
```python
|
|
121
|
+
from tol_palettes import tol_cset, tol_cmap
|
|
122
|
+
|
|
123
|
+
bright = tol_cset("bright")
|
|
124
|
+
cmap = tol_cmap("sunset") # Returns matplotlib colormap when matplotlib is installed
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Godot 4.x & Pixel Art (`dist/godot/`, `dist/aseprite/`, `dist/gpl/`, `dist/assets/`)
|
|
128
|
+
- **Godot 4.x Addon**: Extract `dist/assets/tol-palettes-godot.zip` into your project root to install `addons/tol_palettes/` with `plugin.cfg`, `tol_palettes.gd` (`TolPalettes`), and 22 `ColorPalette` `.tres` resources. See [`docs/game.md`](docs/game.md).
|
|
129
|
+
- **Aseprite & GPL Bundles**: Download `dist/assets/tol-palettes-aseprite.zip` or `tol-palettes-gpl.zip` for instant drag-and-drop palette loading in Aseprite, GIMP, Inkscape, or Krita.
|
|
130
|
+
- Download zip bundles directly from the [latest GitHub Release](https://github.com/kidthales/tol-palettes/releases).
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Layout & Generated Outputs
|
|
135
|
+
|
|
136
|
+
| Path | Command | Description |
|
|
137
|
+
|---|---|---|
|
|
138
|
+
| `data/schemes/*.json` | `npm run validate` | 22 verified scheme JSON files validated against `schema/scheme.schema.json` |
|
|
139
|
+
| `dist/css/` | `npm run generate:css` | Per-scheme CSS custom properties (`<id>.css`) and bundle (`tol.css`) — see [`docs/css.md`](docs/css.md) |
|
|
140
|
+
| `dist/js/` & `dist/json/` | `npm run generate:js` | Tree-shakeable ESM module (`index.js` + `index.d.ts`) and flat `schemes.json` — see [`docs/js.md`](docs/js.md) |
|
|
141
|
+
| `dist/py/` | `npm run generate:py` | Python module (`tol_palettes.py`) with optional `matplotlib` support — see [`docs/python.md`](docs/python.md) |
|
|
142
|
+
| `dist/gpl/`, `dist/aseprite/`, `dist/godot/` | `npm run generate:game` | GIMP/Aseprite `.gpl` palettes, Godot 4.x `tol_palettes.gd` and `ColorPalette` `.tres` resources — see [`docs/game.md`](docs/game.md) |
|
|
143
|
+
| `dist/assets/` | `npm run package:assets` | Downloadable `.zip` archives for Godot (`tol-palettes-godot.zip`), Aseprite, and GPL |
|
|
144
|
+
| `dist/gallery/` | `npm run generate:gallery` | Self-contained offline HTML reference gallery (`index.html`) with copyable hex codes and WCAG contrast ratios |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Regenerating, Linting & Testing
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
npm run lint # Validate schemas, JS syntax, attribution headers, and export resolution
|
|
152
|
+
npm run validate # Validate all 22 scheme JSON files against schema + invariants
|
|
153
|
+
npm run generate # Regenerate all outputs in dist/
|
|
154
|
+
npm test # Run full linter, schema, CSS, JS/TS, Python, Game/Godot/GPL, Gallery, and packaging test suite
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Community & Citation
|
|
160
|
+
|
|
161
|
+
- **Code of Conduct**: This project is governed by the [Contributor Covenant v2.1](CODE_OF_CONDUCT.md). Please report issues or violations to `admin@agogpixel.com`.
|
|
162
|
+
- **Contributing**: Please review [CONTRIBUTING.md](CONTRIBUTING.md) for local development workflows and code generation rules.
|
|
163
|
+
- **Academic Citation**: If you use `tol-palettes` or Paul Tol's colour schemes in academic publications, research software, or educational material, please cite this project via [`CITATION.cff`](CITATION.cff) and Paul Tol's technical report:
|
|
164
|
+
|
|
165
|
+
```bibtex
|
|
166
|
+
@techreport{tol2021colourschemes,
|
|
167
|
+
author = {Paul Tol},
|
|
168
|
+
title = {Colour Schemes},
|
|
169
|
+
institution = {SRON Netherlands Institute for Space Research},
|
|
170
|
+
year = {2021},
|
|
171
|
+
number = {SRON/EPS/TN/09-002},
|
|
172
|
+
type = {Technical report issue 3.2},
|
|
173
|
+
url = {https://sronpersonalpages.nl/~pault/data/colourschemes.pdf}
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## License & Attribution
|
|
180
|
+
|
|
181
|
+
- **Project Code & Generators**: [BSD 3-Clause License](LICENSE) (`Copyright (c) 2026, kidthales`).
|
|
182
|
+
- **Colour Scheme Data**: Sourced from [Paul Tol's Notes](https://sronpersonalpages.nl/~pault/) and `tol_colors.py` (version 2022.10, `Copyright (c) 2022, Paul Tol`, 3-Clause BSD). See [`NOTICE`](NOTICE) for full attribution and the BSD licence notice, and [`docs/cvd-and-greyscale-scope.md`](docs/cvd-and-greyscale-scope.md) for the scope decision on colour-blindness and greyscale reference material.
|
|
2
183
|
|
|
3
|
-
This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "banded-12",
|
|
3
|
+
"kind": "sequential",
|
|
4
|
+
"colors": [
|
|
5
|
+
{
|
|
6
|
+
"hex": "#D2D1E2"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"hex": "#C1A7C4"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"hex": "#AD7BA4"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"hex": "#93C7EC"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"hex": "#6DA1D6"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"hex": "#3E79BD"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"hex": "#B8D29E"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"hex": "#7BB47D"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"hex": "#2C925B"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"hex": "#F4A937"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"hex": "#EB7121"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"hex": "#D9070D"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"bad": "#FFFFFF",
|
|
43
|
+
"interpolation": "none",
|
|
44
|
+
"source": {
|
|
45
|
+
"retrieved": "2026-10-18",
|
|
46
|
+
"siteFigure": "fig:scheme_banded",
|
|
47
|
+
"siteUrl": "https://sronpersonalpages.nl/~pault/#fig:scheme_banded"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "banded-16",
|
|
3
|
+
"kind": "sequential",
|
|
4
|
+
"colors": [
|
|
5
|
+
{
|
|
6
|
+
"hex": "#D2D1E2"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"hex": "#C5B3CC"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"hex": "#B893B5"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"hex": "#A8719D"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"hex": "#97CDEF"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"hex": "#7DB1DF"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"hex": "#5F94CE"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"hex": "#3976BB"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"hex": "#BCD4A0"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"hex": "#90BE88"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"hex": "#60A770"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"hex": "#198D56"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"hex": "#F5B43B"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"hex": "#F08C2B"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"hex": "#E85E1B"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"hex": "#D9070D"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"bad": "#FFFFFF",
|
|
55
|
+
"interpolation": "none",
|
|
56
|
+
"source": {
|
|
57
|
+
"retrieved": "2026-10-18",
|
|
58
|
+
"siteFigure": "fig:scheme_banded",
|
|
59
|
+
"siteUrl": "https://sronpersonalpages.nl/~pault/#fig:scheme_banded"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "banded-20",
|
|
3
|
+
"kind": "sequential",
|
|
4
|
+
"colors": [
|
|
5
|
+
{
|
|
6
|
+
"hex": "#D2D1E2"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"hex": "#C8B9D1"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"hex": "#BEA0BF"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"hex": "#B287AD"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"hex": "#A56B99"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"hex": "#9ACFF1"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"hex": "#85BAE4"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"hex": "#6FA3D7"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"hex": "#578DC9"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"hex": "#3774BA"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"hex": "#BFD6A1"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"hex": "#9CC48E"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"hex": "#78B27B"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"hex": "#4F9F68"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"hex": "#058A53"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"hex": "#F6B93D"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"hex": "#F29B31"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"hex": "#ED7A24"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"hex": "#E65318"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"hex": "#D9070D"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"bad": "#FFFFFF",
|
|
67
|
+
"interpolation": "none",
|
|
68
|
+
"source": {
|
|
69
|
+
"retrieved": "2026-10-18",
|
|
70
|
+
"siteFigure": "fig:scheme_banded",
|
|
71
|
+
"siteUrl": "https://sronpersonalpages.nl/~pault/#fig:scheme_banded"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bright",
|
|
3
|
+
"kind": "qualitative",
|
|
4
|
+
"colors": [
|
|
5
|
+
{
|
|
6
|
+
"hex": "#4477AA",
|
|
7
|
+
"name": "blue"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"hex": "#EE6677",
|
|
11
|
+
"name": "red"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"hex": "#228833",
|
|
15
|
+
"name": "green"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"hex": "#CCBB44",
|
|
19
|
+
"name": "yellow"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"hex": "#66CCEE",
|
|
23
|
+
"name": "cyan"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"hex": "#AA3377",
|
|
27
|
+
"name": "purple"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"hex": "#BBBBBB",
|
|
31
|
+
"name": "grey"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"extras": [
|
|
35
|
+
{
|
|
36
|
+
"hex": "#000000",
|
|
37
|
+
"name": "black"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"interpolation": "none",
|
|
41
|
+
"source": {
|
|
42
|
+
"retrieved": "2026-10-18",
|
|
43
|
+
"siteFigure": "fig:scheme_bright",
|
|
44
|
+
"siteUrl": "https://sronpersonalpages.nl/~pault/#fig:scheme_bright",
|
|
45
|
+
"module": "tol_cset('bright')",
|
|
46
|
+
"moduleVersion": "2022.10"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "burd",
|
|
3
|
+
"kind": "diverging",
|
|
4
|
+
"colors": [
|
|
5
|
+
{
|
|
6
|
+
"hex": "#2166AC"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"hex": "#4393C3"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"hex": "#92C5DE"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"hex": "#D1E5F0"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"hex": "#F7F7F7"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"hex": "#FDDBC7"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"hex": "#F4A582"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"hex": "#D6604D"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"hex": "#B2182B"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"bad": "#FFEE99",
|
|
34
|
+
"interpolation": "either",
|
|
35
|
+
"source": {
|
|
36
|
+
"retrieved": "2026-10-18",
|
|
37
|
+
"siteFigure": "fig:scheme_burd",
|
|
38
|
+
"siteUrl": "https://sronpersonalpages.nl/~pault/#fig:scheme_burd",
|
|
39
|
+
"module": "tol_cmap('BuRd')",
|
|
40
|
+
"moduleName": "BuRd",
|
|
41
|
+
"moduleVersion": "2022.10"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "dark",
|
|
3
|
+
"kind": "qualitative",
|
|
4
|
+
"colors": [
|
|
5
|
+
{
|
|
6
|
+
"hex": "#4477BB"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"hex": "#CC4466"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"hex": "#228833"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"hex": "#2255AA"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"hex": "#993366"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"hex": "#006644"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"hex": "#117788"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"hex": "#882288"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"hex": "#BB4488"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"hex": "#775500"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"hex": "#444444"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"interpolation": "none",
|
|
40
|
+
"source": {
|
|
41
|
+
"retrieved": "2026-10-18",
|
|
42
|
+
"siteFigure": "fig:scheme_dark",
|
|
43
|
+
"siteUrl": "https://sronpersonalpages.nl/~pault/#fig:scheme_dark"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "groundcover",
|
|
3
|
+
"kind": "special",
|
|
4
|
+
"colors": [
|
|
5
|
+
{
|
|
6
|
+
"hex": "#5566AA"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"hex": "#117733"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"hex": "#44AA66"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"hex": "#55AA22"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"hex": "#668822"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"hex": "#99BB55"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"hex": "#558877"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"hex": "#88BBAA"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"hex": "#AADDCC"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"hex": "#44AA88"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"hex": "#DDCC66"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"hex": "#FFDD44"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"hex": "#FFEE88"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"hex": "#BB0011"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"interpolation": "none",
|
|
49
|
+
"source": {
|
|
50
|
+
"retrieved": "2026-10-18",
|
|
51
|
+
"siteFigure": "fig:scheme_groundcover",
|
|
52
|
+
"siteUrl": "https://sronpersonalpages.nl/~pault/#fig:scheme_groundcover"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "high-contrast",
|
|
3
|
+
"kind": "qualitative",
|
|
4
|
+
"colors": [
|
|
5
|
+
{
|
|
6
|
+
"hex": "#004488",
|
|
7
|
+
"name": "blue"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"hex": "#DDAA33",
|
|
11
|
+
"name": "yellow"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"hex": "#BB5566",
|
|
15
|
+
"name": "red"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"extras": [
|
|
19
|
+
{
|
|
20
|
+
"hex": "#000000",
|
|
21
|
+
"name": "black"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"interpolation": "none",
|
|
25
|
+
"source": {
|
|
26
|
+
"retrieved": "2026-10-18",
|
|
27
|
+
"siteFigure": "fig:scheme_highcontrast",
|
|
28
|
+
"siteUrl": "https://sronpersonalpages.nl/~pault/#fig:scheme_highcontrast",
|
|
29
|
+
"module": "tol_cset('high-contrast')",
|
|
30
|
+
"moduleVersion": "2022.10"
|
|
31
|
+
}
|
|
32
|
+
}
|