colorsbymax 0.1.0 → 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/CHANGELOG.md +38 -0
- package/README.md +199 -138
- package/THIRD_PARTY_NOTICES.md +47 -1
- package/dist/ThemeSwitcher-CnxUWdBP.js +4673 -0
- package/dist/auto.js +48 -0
- package/dist/index.js +1 -4201
- package/dist/pdf.js +9 -0
- package/package.json +51 -11
- package/types/auto.d.ts +10 -0
- package/types/index.d.ts +285 -0
- package/types/pdf.d.ts +7 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
What changed in each colorsbymax release. Update with `npm install colorsbymax@latest`.
|
|
4
|
+
|
|
5
|
+
## 0.2.0 (2026-09-25)
|
|
6
|
+
|
|
7
|
+
**Upgrading from 0.1.x:** the colour button moves to the bottom-right corner; add `position: 'top-right'` to keep it where it was. If your site doesn't use colorsbymax's `--color-*` variables, themes now re-colour it automatically; to keep the old behaviour (themes set only the variables), pass `recolour: false` in the config.
|
|
8
|
+
|
|
9
|
+
- **One-line setup.** `import 'colorsbymax/auto'` puts the colour button on the page with no wrapping or config. `autoMount(config)` from the same entry takes settings.
|
|
10
|
+
- **Re-colours any site.** Sites with hard-coded colours are re-coloured by swapping the colours actually on the page for the chosen theme's, including gradients, borders and SVG icons, and content that appears later. Sites that use the colour variables work exactly as before.
|
|
11
|
+
- **The colour button now starts in the bottom-right corner**, where chat and help widgets usually sit, and the panel opens above it. `position` picks another corner; `position: 'top-right'` keeps 0.1's spot just under a floating nav bar. Visitors can still drag it anywhere.
|
|
12
|
+
- The site's own group shows its original colours ("… original") when colorsbymax is re-colouring it.
|
|
13
|
+
|
|
14
|
+
## 0.1.1 (2026-09-25)
|
|
15
|
+
|
|
16
|
+
**Upgrading from 0.1.0:** nothing to change for most sites. The one exception: PDF uploads are now opt-in. To keep them, install `pdfjs-dist` and pass the loader in your config:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install pdfjs-dist
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```jsx
|
|
23
|
+
import { loadPdf } from 'colorsbymax/pdf'
|
|
24
|
+
|
|
25
|
+
<ThemeProvider config={{ ...config, pdf: loadPdf }}>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Without it, "Palette from an image" still works; it just takes images only. If you call `coloursFromFile` yourself, pass `{ loadPdf }` as its second argument for PDFs.
|
|
29
|
+
|
|
30
|
+
- **TypeScript types included.** No more "Could not find a declaration file for module 'colorsbymax'" (TS7016) in strict projects; `useTheme()`, the config and the colour helpers are fully typed.
|
|
31
|
+
- **Much smaller install.** No runtime dependencies besides React: about 440 KB instead of 44 MB. The panel's icons are built in, so it no longer adds a second copy of `lucide-react` next to your own, and PDF.js is no longer installed unless you opt in.
|
|
32
|
+
- **No install scripts**, so npm has nothing to ask you to approve for colorsbymax.
|
|
33
|
+
- Site scans ignore colour transitions, so sites that animate colour changes scan their own colours rather than the applied theme's.
|
|
34
|
+
- README: an "At a glance" section (Tailwind is optional, ESM only, types included) and PDF opt-in docs.
|
|
35
|
+
|
|
36
|
+
## 0.1.0 (2026-09-25)
|
|
37
|
+
|
|
38
|
+
First release: the floating colour button and panel, site themes and scan, Max's picks and the 715-theme library, custom palettes, overrides, JSON import/export, palettes from images and PDFs, light and dark mode, visitor settings, and WCAG contrast checks with one-click fixes.
|
package/README.md
CHANGED
|
@@ -1,138 +1,199 @@
|
|
|
1
|
-
# colorsbymax™
|
|
2
|
-
|
|
3
|
-
**by mrmaxdesigns**
|
|
4
|
-
|
|
5
|
-
A floating theme switcher for websites. Visitors (or the site's owner) can re-colour the whole site instantly: pick one of the site's own themes, a hand-tuned pick, or one of 715 library themes in 14 categories; build and share custom palettes; or override single colours. Every theme is checked against the Web Content Accessibility Guidelines (WCAG) contrast rules, with one-click fixes.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- **
|
|
20
|
-
- **
|
|
21
|
-
- **
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
npm
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
1
|
+
# colorsbymax™
|
|
2
|
+
|
|
3
|
+
**by mrmaxdesigns**
|
|
4
|
+
|
|
5
|
+
A floating theme switcher for websites. Visitors (or the site's owner) can re-colour the whole site instantly: pick one of the site's own themes, a hand-tuned pick, or one of 715 library themes in 14 categories; build and share custom palettes; or override single colours. Every theme is checked against the Web Content Accessibility Guidelines (WCAG) contrast rules, with one-click fixes.
|
|
6
|
+
|
|
7
|
+
**At a glance**
|
|
8
|
+
|
|
9
|
+
- **Two steps.** `npm install colorsbymax`, then `import 'colorsbymax/auto'` once. The colour button appears and visitors can re-colour the site, even if its colours are hard-coded (see [Quick start](#quick-start)).
|
|
10
|
+
- **React 18 or 19.**
|
|
11
|
+
- **Tailwind optional.** The panel carries its own styles, so it works with Tailwind v4, older Tailwind or plain CSS. Your site only needs to paint its colours with `var(--color-…)` variables. The optional `colorsbymax/tokens.css` helper is for Tailwind v4 (`@theme` syntax); without Tailwind v4, define the variables yourself.
|
|
12
|
+
- **TypeScript types included.**
|
|
13
|
+
- **No runtime dependencies** besides React. PDF uploads are opt-in and need `pdfjs-dist` (see [PDF uploads](#pdf-uploads)).
|
|
14
|
+
- **ESM only.** Import it from a bundler or `import()`; `require('colorsbymax')` from CommonJS isn't supported.
|
|
15
|
+
- **The colour tools work on their own too.** `contrastRatio`, `checkTheme`, `suggestFix`, `fixAll`, `themeFromPalette`, `darkTokens` and the rest are plain functions with no UI.
|
|
16
|
+
|
|
17
|
+
## Features
|
|
18
|
+
|
|
19
|
+
- **Site themes first.** The panel opens on a group named after the site, holding its own colours. If those fail contrast, an accessible version is generated automatically.
|
|
20
|
+
- **Scan the site.** Press "Scan site" and colorsbymax reads the colours actually painted on the page (ignoring any theme it has applied, and including gradients). It works out the page background, surfaces, text and brand colours, then adds themes named after the site: Scanned (as found), Accessible, Soft, Bold, Complementary, and the closest library matches. Scans run only when asked, and the results are remembered.
|
|
21
|
+
- **Max’s picks and library.** 5 hand-tuned picks, plus 715 library themes (Bright, Fun, Pastel, Earth tones, Summer, Autumn, Winter, Spring, Ocean, Warm, Nature, Moody, Monochrome, Eclectic) with search and "Surprise me". The library loads only when the panel opens.
|
|
22
|
+
- **Custom palettes, single-colour overrides, JSON import/export.**
|
|
23
|
+
- **Palettes from images and PDFs.** In Import / export, upload or drop a mood board, screenshot or photo. colorsbymax picks out its main colours, lets you leave any out, previews the palette it builds around them and saves it as a custom palette. Nothing leaves the browser. PDFs, such as brand guides, work where the site [turns them on](#pdf-uploads); hex codes written in a PDF take priority.
|
|
24
|
+
- **Contrast checks.** Problems show as a badge on the theme; the breakdown offers per-item fixes or "Fix all automatically", which changes lightness only.
|
|
25
|
+
- **No flash on reload.** An inline pre-paint script applies the saved theme before the page draws.
|
|
26
|
+
- **Works on any site.** The panel carries its own stylesheet inside a shadow root, so it needs no Tailwind or other CSS from the site, and the site's CSS can't restyle it.
|
|
27
|
+
- **Movable colour button.** The floating button starts in the corner; visitors can drag it anywhere (mouse or touch; a tooltip says so on hover, and the panel closes while it moves) and it stays there, remembered across reloads. The panel then opens beside it, on whichever side has room. Its dot cycles through the current theme's colours.
|
|
28
|
+
- **Light and dark mode.** Every built-in theme is designed light; dark mode lists a generated dark twin of each (dark surfaces, light text, brand colours lifted to read on dark, then contrast-fixed) and switches the current theme to its twin. The panel turns dark with it. Custom palettes stay as they were made.
|
|
29
|
+
- **Visitor settings.** The gear in the panel header opens settings: theme mode (Light, Dark, Auto), panel size (Compact, Standard, Large), which groups and sections to show, whether the button can be dragged or its dot animates, and moving the button back to its corner. Saved per site.
|
|
30
|
+
- **Resizable panel.** Drag the panel's free edges or corner (the ones away from the colour button) to any size, or pick a size in settings; double-click an edge to reset it. The layout follows the panel's width, so a large panel shows three theme cards a row.
|
|
31
|
+
- **Clear groups and feedback.** The site's own group (globe), Max’s picks (paintbrush) and Yours (person) sit in their own row, apart from the library's categories. Toasts confirm what just happened; saving, importing or building a palette says it went to Yours and offers "Show" to jump straight to it. Tooltips are drawn in the panel's colours.
|
|
32
|
+
- **Themed scrollbars.** The page's scrollbars and the panel's slim one take the selected theme's primary colour. Turn the page's off with `scrollbars: false`.
|
|
33
|
+
- **Accessible panel.** A labelled dialog with focus trap, Escape, the colour button or an outside click to close, keyboard operable, and reduced-motion support.
|
|
34
|
+
|
|
35
|
+
## How it works
|
|
36
|
+
|
|
37
|
+
Every colour is one of 35 tokens (`primary`, `surface`, `ink`, `data-1`…), exposed as `--color-<token>` CSS variables. Applying a theme just sets those variables on `<html>`, so anything the site paints with `var(--color-primary)` (directly, or through Tailwind CSS v4 utilities like `bg-primary`) changes instantly. There's no rebuild and no re-render.
|
|
38
|
+
|
|
39
|
+
The switcher renders into a `<colorsbymax-root>` element on `<body>` with its own shadow root and stylesheet. Only the `--color-*` variables cross into it. With reduced motion, the colour button's dot holds still on the theme's primary colour.
|
|
40
|
+
|
|
41
|
+
## Try the demo
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install
|
|
45
|
+
npm run dev
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
This serves `demo/`: colorsbymax's own landing page, built with Tailwind, where every colour is a token (it uses every token group, and a strip shows the live values); `/plain.html`, a plain-CSS bakery site with deliberately careless global styles to show they don't reach the panel; and `/unwired.html`, a coffee shop with only hard-coded colours whose whole setup is `import 'colorsbymax/auto'`.
|
|
49
|
+
|
|
50
|
+
## Quick start
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install colorsbymax
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Then add one line anywhere in your site's code, for example `main.jsx`:
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
import 'colorsbymax/auto'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
That's all. The colour button appears in the bottom-right corner once the page has loaded, and visitors can start swapping the site's colours. (npm doesn't let a package change your site on install, so this one line is the only step.)
|
|
63
|
+
|
|
64
|
+
- **Any site's colours.** If your site doesn't use colorsbymax's colour variables, colorsbymax reads the colours actually on the page (backgrounds, text, borders, gradients and icons) and swaps each for its counterpart in the chosen theme: greys follow the theme's background and text, brand shades follow its brand colour, and success and error colours keep their meaning. Content added later is re-coloured too, and picking the site's own theme brings back the exact original.
|
|
65
|
+
- **Settings.** Use `autoMount` instead of the plain import:
|
|
66
|
+
|
|
67
|
+
```js
|
|
68
|
+
import { autoMount } from 'colorsbymax/auto'
|
|
69
|
+
autoMount({ siteName: 'My site', storageKey: 'my-site-theme' })
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
- **Where automatic re-colouring falls short:** images keep their colours, hover and focus colours keep the site's own, and colours drawn by `::before`/`::after` aren't swapped. For full control, use the colour variables below; colorsbymax then applies themes to them directly, with no page reading at all.
|
|
73
|
+
|
|
74
|
+
Already installed it? Get the newest version with `npm install colorsbymax@latest` (see [Updating](#updating)).
|
|
75
|
+
|
|
76
|
+
## Add it to a site
|
|
77
|
+
|
|
78
|
+
This is the full setup, for sites that want exact control over which colour goes where. colorsbymax needs React 18 or 19, and ships as plain JavaScript with TypeScript types, so Vite, Next.js, webpack and other bundlers use it without extra setup:
|
|
79
|
+
|
|
80
|
+
1. **Paint the site with the token variables.** Use `var(--color-<token>)` wherever the site sets a colour, with your own colours as the starting values.
|
|
81
|
+
|
|
82
|
+
With Tailwind CSS v4, import the defaults (`colorsbymax/tokens.css` is Tailwind v4 syntax), override them, and use the token utilities (`bg-primary`, `text-ink`, …) instead of hard-coded colours:
|
|
83
|
+
|
|
84
|
+
```css
|
|
85
|
+
@import "tailwindcss";
|
|
86
|
+
@import "colorsbymax/tokens.css";
|
|
87
|
+
|
|
88
|
+
@theme static {
|
|
89
|
+
--color-primary: #c67cde; /* your colours */
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
With plain CSS, or Tailwind before v4, define the variables yourself (`demo/plain.html` shows this):
|
|
94
|
+
|
|
95
|
+
```css
|
|
96
|
+
:root {
|
|
97
|
+
--color-primary: #c67cde;
|
|
98
|
+
}
|
|
99
|
+
.button {
|
|
100
|
+
background: var(--color-primary);
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
2. **Wrap the app and render the switcher:**
|
|
105
|
+
|
|
106
|
+
```jsx
|
|
107
|
+
import { ThemeProvider, ThemeSwitcher } from 'colorsbymax'
|
|
108
|
+
|
|
109
|
+
<ThemeProvider config={config}>
|
|
110
|
+
<App />
|
|
111
|
+
<ThemeSwitcher />
|
|
112
|
+
</ThemeProvider>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
The switcher needs React but not a React site: `demo/plain.jsx` mounts it on its own next to a static page.
|
|
116
|
+
|
|
117
|
+
3. **Add the pre-paint script** to `<head>`, as a classic inline `<script>`, using the same storage key. `prePaintScript(storageKey)` returns its source, and `demo/index.html` shows it in place.
|
|
118
|
+
|
|
119
|
+
Without a `siteName`, the site group is named from the page's `og:site_name`, its title or its host name.
|
|
120
|
+
|
|
121
|
+
### Config
|
|
122
|
+
|
|
123
|
+
```js
|
|
124
|
+
{
|
|
125
|
+
siteName: 'Tsungi', // name of the first theme group
|
|
126
|
+
storageKey: 'tsungi-theme', // localStorage key (match the pre-paint script)
|
|
127
|
+
defaultTheme: { name, tokens }, // the site's own colours; missing tokens are filled in
|
|
128
|
+
themes: [{ id, name, tokens }], // optional extra themes made for the site
|
|
129
|
+
usage: { primary: 'Buttons…' }, // optional notes shown in the colour editors
|
|
130
|
+
scrollbars: true, // colour the page's scrollbars from the theme (default)
|
|
131
|
+
pdf: loadPdf, // optional: allow PDF uploads (see below)
|
|
132
|
+
recolour: 'auto', // re-colour hard-coded colours: 'auto' (only if the site has
|
|
133
|
+
// no --color-* variables, the default), true or false
|
|
134
|
+
position: 'bottom-right', // where the button starts: bottom-right (default), bottom-left,
|
|
135
|
+
// top-left, or top-right (just under a floating nav bar)
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### PDF uploads
|
|
140
|
+
|
|
141
|
+
Building a palette from an image works out of the box. PDFs, such as brand guides, need [PDF.js](https://mozilla.github.io/pdf.js/), which is large, so it's opt-in: install it and pass the loader from `colorsbymax/pdf`.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npm install pdfjs-dist
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
```jsx
|
|
148
|
+
import { loadPdf } from 'colorsbymax/pdf'
|
|
149
|
+
|
|
150
|
+
<ThemeProvider config={{ ...config, pdf: loadPdf }}>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
PDF.js still downloads only when a visitor picks a PDF. Sites that don't opt in never install or bundle it, and the upload offers images only.
|
|
154
|
+
|
|
155
|
+
`examples/tsungi.config.js` is a complete example for tsungi.online, the first site to use colorsbymax.
|
|
156
|
+
|
|
157
|
+
## Updating
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npm install colorsbymax@latest
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
This moves you to the newest release and records it in your `package.json`. `npm update` alone isn't enough while colorsbymax is below 1.0: with the usual `^0.1.0` range, npm treats 0.2.0 as a breaking change and stays on 0.1.x. Check which version you have with `npm ls colorsbymax`.
|
|
164
|
+
|
|
165
|
+
What changed in each release, and anything you need to do when upgrading, is in [CHANGELOG.md](CHANGELOG.md).
|
|
166
|
+
|
|
167
|
+
## Building the package
|
|
168
|
+
|
|
169
|
+
`src/` is the source; `dist/` is what sites install: plain JavaScript with the JSX compiled away. `types/` holds the hand-written TypeScript declarations; `npm run typecheck` compiles `types/check.tsx` against them and checks they match the built exports. The panel's icons are copied from Lucide into `src/icons.jsx` by `npm run icons`. `dist/` is committed so installs straight from GitHub work even when npm skips install scripts, so rebuild it before committing changes to `src/`. `npm publish` also rebuilds it first:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npm run build
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Panel styles
|
|
176
|
+
|
|
177
|
+
The panel is styled with Tailwind classes in `src/ThemePanel.jsx` and `src/ThemeSwitcher.jsx`. `scripts/build-css.mjs` compiles them, with `src/panel.css`, into `src/panel-css.generated.js`. The demo server does this automatically as you edit; otherwise run:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
npm run css
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Regenerating the library
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
npm run presets
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
`scripts/generate-presets.mjs` turns each source palette into a full theme, auto-fixes contrast, drops anything that still fails or duplicates another theme, names it and tags its categories. Adjust the category rules at the top of the script.
|
|
190
|
+
|
|
191
|
+
## Notices
|
|
192
|
+
|
|
193
|
+
The library palettes come from [nice-color-palettes](https://github.com/Jam3/nice-color-palettes) (MIT). Its licence notice is in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) and must ship with every copy.
|
|
194
|
+
|
|
195
|
+
PDF reading uses [pdfjs-dist](https://github.com/mozilla/pdf.js) (Apache-2.0), installed as a dependency rather than bundled into colorsbymax.
|
|
196
|
+
|
|
197
|
+
## Licence
|
|
198
|
+
|
|
199
|
+
colorsbymax is released under the [MIT Licence](LICENSE). The names colorsbymax™ and mrmaxdesigns are marks of Max Muyalwa and aren't covered by the code licence.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Third-party notices
|
|
2
2
|
|
|
3
|
-
colorsbymax™ includes material from the following
|
|
3
|
+
colorsbymax™ includes material from the following projects. Their licences require these notices to ship with every copy of the product.
|
|
4
4
|
|
|
5
5
|
## nice-color-palettes
|
|
6
6
|
|
|
@@ -29,3 +29,49 @@ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
|
|
29
29
|
OR OTHER DEALINGS IN THE SOFTWARE.
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
+
|
|
33
|
+
## Lucide
|
|
34
|
+
|
|
35
|
+
The switcher's icons (`src/icons.jsx`) are copied from [Lucide](https://lucide.dev), generated from lucide-react by `scripts/build-icons.mjs`. Some Lucide icons derive from [Feather](https://feathericons.com); of those used here, that's arrow-left, check, chevron-right, download, monitor, moon, trash, upload and x, covered by the MIT notice below.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
ISC License
|
|
39
|
+
|
|
40
|
+
Copyright (c) 2026 Lucide Icons and Contributors
|
|
41
|
+
|
|
42
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
43
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
44
|
+
copyright notice and this permission notice appear in all copies.
|
|
45
|
+
|
|
46
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
47
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
48
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
49
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
50
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
51
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
52
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
The MIT License (MIT) (for the icons listed above)
|
|
57
|
+
|
|
58
|
+
Copyright (c) 2013-present Cole Bemis
|
|
59
|
+
|
|
60
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
61
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
62
|
+
in the Software without restriction, including without limitation the rights
|
|
63
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
64
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
65
|
+
furnished to do so, subject to the following conditions:
|
|
66
|
+
|
|
67
|
+
The above copyright notice and this permission notice shall be included in all
|
|
68
|
+
copies or substantial portions of the Software.
|
|
69
|
+
|
|
70
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
71
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
72
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
73
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
74
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
75
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
76
|
+
SOFTWARE.
|
|
77
|
+
```
|