@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.
Files changed (145) hide show
  1. package/LICENSE +36 -0
  2. package/NOTICE +58 -0
  3. package/README.md +182 -2
  4. package/data/schemes/banded-12.json +49 -0
  5. package/data/schemes/banded-16.json +61 -0
  6. package/data/schemes/banded-20.json +73 -0
  7. package/data/schemes/bright.json +48 -0
  8. package/data/schemes/burd.json +43 -0
  9. package/data/schemes/dark.json +45 -0
  10. package/data/schemes/groundcover.json +54 -0
  11. package/data/schemes/high-contrast.json +32 -0
  12. package/data/schemes/incandescent.json +46 -0
  13. package/data/schemes/iridescent.json +85 -0
  14. package/data/schemes/light.json +56 -0
  15. package/data/schemes/medium-contrast.json +44 -0
  16. package/data/schemes/muted.json +61 -0
  17. package/data/schemes/nightfall.json +78 -0
  18. package/data/schemes/pale.json +33 -0
  19. package/data/schemes/prgn.json +43 -0
  20. package/data/schemes/rainbow-discrete.json +430 -0
  21. package/data/schemes/rainbow-smooth.json +143 -0
  22. package/data/schemes/sunset.json +49 -0
  23. package/data/schemes/vibrant.json +48 -0
  24. package/data/schemes/whorbr.json +44 -0
  25. package/data/schemes/ylorbr.json +43 -0
  26. package/dist/aseprite/banded-12.gpl +21 -0
  27. package/dist/aseprite/banded-16.gpl +25 -0
  28. package/dist/aseprite/banded-20.gpl +29 -0
  29. package/dist/aseprite/bright.gpl +17 -0
  30. package/dist/aseprite/burd.gpl +18 -0
  31. package/dist/aseprite/dark.gpl +20 -0
  32. package/dist/aseprite/groundcover.gpl +23 -0
  33. package/dist/aseprite/high-contrast.gpl +13 -0
  34. package/dist/aseprite/incandescent.gpl +20 -0
  35. package/dist/aseprite/iridescent.gpl +32 -0
  36. package/dist/aseprite/light.gpl +19 -0
  37. package/dist/aseprite/medium-contrast.gpl +16 -0
  38. package/dist/aseprite/muted.gpl +20 -0
  39. package/dist/aseprite/nightfall.gpl +26 -0
  40. package/dist/aseprite/pale.gpl +16 -0
  41. package/dist/aseprite/prgn.gpl +18 -0
  42. package/dist/aseprite/rainbow-discrete.gpl +38 -0
  43. package/dist/aseprite/rainbow-smooth.gpl +43 -0
  44. package/dist/aseprite/sunset.gpl +20 -0
  45. package/dist/aseprite/vibrant.gpl +17 -0
  46. package/dist/aseprite/whorbr.gpl +18 -0
  47. package/dist/aseprite/ylorbr.gpl +18 -0
  48. package/dist/css/banded-12.css +23 -0
  49. package/dist/css/banded-16.css +27 -0
  50. package/dist/css/banded-20.css +31 -0
  51. package/dist/css/bright.css +25 -0
  52. package/dist/css/burd.css +21 -0
  53. package/dist/css/dark.css +21 -0
  54. package/dist/css/groundcover.css +24 -0
  55. package/dist/css/high-contrast.css +17 -0
  56. package/dist/css/incandescent.css +23 -0
  57. package/dist/css/iridescent.css +35 -0
  58. package/dist/css/light.css +29 -0
  59. package/dist/css/medium-contrast.css +23 -0
  60. package/dist/css/muted.css +31 -0
  61. package/dist/css/nightfall.css +38 -0
  62. package/dist/css/pale.css +17 -0
  63. package/dist/css/prgn.css +21 -0
  64. package/dist/css/rainbow-discrete.css +316 -0
  65. package/dist/css/rainbow-smooth.css +46 -0
  66. package/dist/css/sunset.css +23 -0
  67. package/dist/css/tol.css +732 -0
  68. package/dist/css/vibrant.css +25 -0
  69. package/dist/css/whorbr.css +21 -0
  70. package/dist/css/ylorbr.css +21 -0
  71. package/dist/godot/addons/tol_palettes/banded-12.tres +10 -0
  72. package/dist/godot/addons/tol_palettes/banded-16.tres +10 -0
  73. package/dist/godot/addons/tol_palettes/banded-20.tres +10 -0
  74. package/dist/godot/addons/tol_palettes/bright.tres +10 -0
  75. package/dist/godot/addons/tol_palettes/burd.tres +10 -0
  76. package/dist/godot/addons/tol_palettes/dark.tres +10 -0
  77. package/dist/godot/addons/tol_palettes/groundcover.tres +10 -0
  78. package/dist/godot/addons/tol_palettes/high-contrast.tres +10 -0
  79. package/dist/godot/addons/tol_palettes/incandescent.tres +10 -0
  80. package/dist/godot/addons/tol_palettes/iridescent.tres +10 -0
  81. package/dist/godot/addons/tol_palettes/light.tres +10 -0
  82. package/dist/godot/addons/tol_palettes/medium-contrast.tres +10 -0
  83. package/dist/godot/addons/tol_palettes/muted.tres +10 -0
  84. package/dist/godot/addons/tol_palettes/nightfall.tres +10 -0
  85. package/dist/godot/addons/tol_palettes/pale.tres +10 -0
  86. package/dist/godot/addons/tol_palettes/plugin.cfg +12 -0
  87. package/dist/godot/addons/tol_palettes/prgn.tres +10 -0
  88. package/dist/godot/addons/tol_palettes/rainbow-discrete.tres +10 -0
  89. package/dist/godot/addons/tol_palettes/rainbow-smooth.tres +10 -0
  90. package/dist/godot/addons/tol_palettes/sunset.tres +10 -0
  91. package/dist/godot/addons/tol_palettes/tol_palettes.gd +301 -0
  92. package/dist/godot/addons/tol_palettes/vibrant.tres +10 -0
  93. package/dist/godot/addons/tol_palettes/whorbr.tres +10 -0
  94. package/dist/godot/addons/tol_palettes/ylorbr.tres +10 -0
  95. package/dist/godot/banded-12.tres +10 -0
  96. package/dist/godot/banded-16.tres +10 -0
  97. package/dist/godot/banded-20.tres +10 -0
  98. package/dist/godot/bright.tres +10 -0
  99. package/dist/godot/burd.tres +10 -0
  100. package/dist/godot/dark.tres +10 -0
  101. package/dist/godot/groundcover.tres +10 -0
  102. package/dist/godot/high-contrast.tres +10 -0
  103. package/dist/godot/incandescent.tres +10 -0
  104. package/dist/godot/iridescent.tres +10 -0
  105. package/dist/godot/light.tres +10 -0
  106. package/dist/godot/medium-contrast.tres +10 -0
  107. package/dist/godot/muted.tres +10 -0
  108. package/dist/godot/nightfall.tres +10 -0
  109. package/dist/godot/pale.tres +10 -0
  110. package/dist/godot/prgn.tres +10 -0
  111. package/dist/godot/rainbow-discrete.tres +10 -0
  112. package/dist/godot/rainbow-smooth.tres +10 -0
  113. package/dist/godot/sunset.tres +10 -0
  114. package/dist/godot/tol_palettes.gd +301 -0
  115. package/dist/godot/vibrant.tres +10 -0
  116. package/dist/godot/whorbr.tres +10 -0
  117. package/dist/godot/ylorbr.tres +10 -0
  118. package/dist/gpl/banded-12.gpl +20 -0
  119. package/dist/gpl/banded-16.gpl +24 -0
  120. package/dist/gpl/banded-20.gpl +28 -0
  121. package/dist/gpl/bright.gpl +16 -0
  122. package/dist/gpl/burd.gpl +17 -0
  123. package/dist/gpl/dark.gpl +19 -0
  124. package/dist/gpl/groundcover.gpl +22 -0
  125. package/dist/gpl/high-contrast.gpl +12 -0
  126. package/dist/gpl/incandescent.gpl +19 -0
  127. package/dist/gpl/iridescent.gpl +31 -0
  128. package/dist/gpl/light.gpl +18 -0
  129. package/dist/gpl/medium-contrast.gpl +15 -0
  130. package/dist/gpl/muted.gpl +19 -0
  131. package/dist/gpl/nightfall.gpl +25 -0
  132. package/dist/gpl/pale.gpl +15 -0
  133. package/dist/gpl/prgn.gpl +17 -0
  134. package/dist/gpl/rainbow-discrete.gpl +37 -0
  135. package/dist/gpl/rainbow-smooth.gpl +42 -0
  136. package/dist/gpl/sunset.gpl +19 -0
  137. package/dist/gpl/vibrant.gpl +16 -0
  138. package/dist/gpl/whorbr.gpl +17 -0
  139. package/dist/gpl/ylorbr.gpl +17 -0
  140. package/dist/js/index.d.ts +92 -0
  141. package/dist/js/index.js +1845 -0
  142. package/dist/json/schemes.json +1613 -0
  143. package/dist/py/tol_palettes.py +1092 -0
  144. package/package.json +82 -4
  145. 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
- # Temporary Holding Version
1
+ # @kidthales/tol-palettes
2
+
3
+ [![CI](https://github.com/kidthales/tol-palettes/actions/workflows/ci.yml/badge.svg)](https://github.com/kidthales/tol-palettes/actions/workflows/ci.yml)
4
+ [![Pages](https://github.com/kidthales/tol-palettes/actions/workflows/pages.yml/badge.svg)](https://tol-palettes.kidthales.com)
5
+ [![npm version](https://img.shields.io/npm/v/@kidthales/tol-palettes.svg)](https://www.npmjs.com/package/@kidthales/tol-palettes)
6
+ [![PyPI version](https://img.shields.io/pypi/v/tol-palettes.svg)](https://pypi.org/project/tol-palettes/)
7
+ [![License: BSD-3-Clause](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](LICENSE)
8
+ [![Node.js >= 22](https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg)](package.json)
9
+ [![DOI](https://img.shields.io/badge/citation-CITATION.cff-informational.svg)](CITATION.cff)
10
+ [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](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
+ }