@thednp/color-picker 0.0.2-alpha5 → 1.0.1

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 (37) hide show
  1. package/README.md +21 -19
  2. package/dist/css/color-picker.css +82 -46
  3. package/dist/css/color-picker.min.css +2 -2
  4. package/dist/css/color-picker.rtl.css +82 -46
  5. package/dist/css/color-picker.rtl.min.css +2 -2
  6. package/dist/js/color-esm.js +2 -5
  7. package/dist/js/color-esm.min.js +1 -1
  8. package/dist/js/color-palette-esm.js +2 -5
  9. package/dist/js/color-palette-esm.min.js +1 -1
  10. package/dist/js/color-palette.js +2 -5
  11. package/dist/js/color-palette.min.js +1 -1
  12. package/dist/js/color-picker-element-esm.js +184 -189
  13. package/dist/js/color-picker-element-esm.min.js +2 -2
  14. package/dist/js/color-picker-element.js +184 -189
  15. package/dist/js/color-picker-element.min.js +2 -2
  16. package/dist/js/color-picker-esm.js +77 -134
  17. package/dist/js/color-picker-esm.min.js +2 -2
  18. package/dist/js/color-picker.js +77 -134
  19. package/dist/js/color-picker.min.js +2 -2
  20. package/dist/js/color.js +2 -5
  21. package/dist/js/color.min.js +1 -1
  22. package/package.json +20 -19
  23. package/src/js/color-picker-element.js +45 -37
  24. package/src/js/color-picker.js +46 -60
  25. package/src/js/color.js +1 -4
  26. package/src/js/index.js +5 -0
  27. package/src/js/util/getColorMenu.js +7 -8
  28. package/src/js/util/setMarkup.js +4 -7
  29. package/src/js/util/toggleCEAttr.js +70 -0
  30. package/src/js/util/version.js +0 -1
  31. package/src/js/version.js +0 -1
  32. package/src/scss/_variables.scss +7 -0
  33. package/src/scss/color-picker.scss +86 -45
  34. package/types/cp.d.ts +31 -17
  35. package/types/index.d.ts +0 -4
  36. package/types/source/source.ts +0 -1
  37. package/types/source/types.d.ts +8 -6
package/README.md CHANGED
@@ -1,18 +1,20 @@
1
- # ColorPicker Web Component ![check-code-coverage](https://img.shields.io/badge/code--coverage-100%25-brightgreen) ![cypress version](https://img.shields.io/badge/cypress-9.5.4-brightgreen) ![esbuild version](https://img.shields.io/badge/esbuild-0.14.30-brightgreen) ![shorter-js version](https://img.shields.io/badge/shorter--js-0.3.4-brightgreen)
2
- The feature rich **ColorPicker** component for the modern web built with TypeScript definitions, WAI-ARIA compliant and lots of goodies. In addition, it features its own version of [TinyColor](https://github.com/bgrins/TinyColor) called simply `Color`.
1
+ ## ColorPicker
2
+ [![Coverage Status](https://coveralls.io/repos/github/thednp/color-picker/badge.svg)](https://coveralls.io/github/thednp/color-picker)
3
+ [![ci](https://github.com/thednp/color-picker/actions/workflows/ci.yml/badge.svg)](https://github.com/thednp/color-picker/actions/workflows/ci.yml)
4
+ [![NPM Version](https://img.shields.io/npm/v/@thednp/color-picker.svg)](https://www.npmjs.com/package/@thednp/color-picker)
5
+ [![NPM Downloads](https://img.shields.io/npm/dm/@thednp/color-picker.svg)](http://npm-stat.com/charts.html?package=@thednp/color-picker)
6
+ [![jsDeliver](https://img.shields.io/jsdelivr/npm/hw/@thednp/color-picker)](https://www.jsdelivr.com/package/npm/@thednp/color-picker)
7
+ ![cypress version](https://img.shields.io/badge/cypress-9.7.0-brightgreen)
8
+ ![typescript version](https://img.shields.io/badge/typescript-4.5.2-brightgreen)
3
9
 
4
- [![image](./docs/img/color-picker.png)](http://thednp.github.io/color-picker)
5
-
6
-
7
- [![NPM Version](https://img.shields.io/npm/v/@thednp/color-picker.svg?style=flat-square)](https://www.npmjs.com/package/@thednp/color-picker)
8
- [![NPM Downloads](https://img.shields.io/npm/dm/@thednp/color-picker.svg?style=flat-square)](http://npm-stat.com/charts.html?package=@thednp/color-picker)
9
- [![Bundle Size](https://img.shields.io/bundlephobia/minzip/@thednp/color-picker?style=flat-square)](https://bundlephobia.com/package/@thednp/color-picker)
10
- [![jsDeliver](https://data.jsdelivr.com/v1/package/npm/@thednp/color-picker/badge)](https://www.jsdelivr.com/package/npm/@thednp/color-picker)
10
+ The feature rich **ColorPicker** component for the modern web built with TypeScript definitions, Cypress tested, WAI-ARIA compliant and lots of goodies. In addition, it features its own version of [TinyColor](https://github.com/bgrins/TinyColor) called simply `Color`.
11
11
 
12
12
  **ColorPicker** can use existing colour palettes or generate custom ones via DATA API configuration. If you want to play, check out [this codepen](https://codepen.io/thednp/pen/WNdRWPN) I've setup for you. Have fun!
13
13
 
14
+ [![image](./docs/img/color-picker.png)](http://thednp.github.io/color-picker)
15
+
14
16
 
15
- # Highlights
17
+ ## Highlights
16
18
  * Accessibility Focus for WAI-ARIA compliance
17
19
  * ES6+ sources with TypeScript definitions
18
20
  * Framework agnostic and flexible design
@@ -23,7 +25,8 @@ The feature rich **ColorPicker** component for the modern web built with TypeScr
23
25
  * Right To Left Languages Supported
24
26
  * light footprint, `10kb` in size when minified and gZipped
25
27
 
26
- # Wiki
28
+
29
+ ## Wiki
27
30
  For an in depth guide on all things **ColorPicker**, check out the wiki pages:
28
31
  * [Home](https://github.com/thednp/color-picker/wiki) - the **ColorPicker** wiki home.
29
32
  * [NPM](https://github.com/thednp/color-picker/wiki/NPM) - quick installation guide.
@@ -32,16 +35,15 @@ For an in depth guide on all things **ColorPicker**, check out the wiki pages:
32
35
  * [ES6+](https://github.com/thednp/color-picker/wiki/ES6) - your usual quick ES6+ guide.
33
36
  * [Node.js](https://github.com/thednp/color-picker/wiki/Node.js) - is this a thing?
34
37
 
35
- **Note** - the wiki pages are still under construction.
36
38
 
37
- # NPM
39
+ ## NPM
38
40
  You can install **ColorPicker** through NPM:
39
41
 
40
42
  ```
41
43
  $ npm install @thednp/color-picker
42
44
  ```
43
45
 
44
- # Browser Usage
46
+ ## Browser Usage
45
47
  Download the [latest package](https://github.com/thednp/color-picker/archive/master.zip). unpack and inspect the contents. You need to copy the `color-picker.js` and `color-picker.css` or their minified variations to your app `assets` folders as follows.
46
48
  Link the required CSS in your document `<head>` tag
47
49
  ```html
@@ -89,14 +91,14 @@ Alternatively you can use the `ColorPickerElement` custom element, the `data-fun
89
91
  As shown in the above example, all DATA API attributes for instance configuration are to be used on your **custom element**.
90
92
 
91
93
 
92
- # Initialize INPUT
94
+ ## Initialize INPUT
93
95
  ```javascript
94
96
  import ColorPicker from '@thednp/color-picker';
95
97
 
96
- let myPicker = new ColorPicker('#myPicker');
98
+ const myPicker = new ColorPicker('#myPicker');
97
99
  ```
98
100
 
99
- # Initialize Custom Element
101
+ ## Initialize Custom Element
100
102
  ```javascript
101
103
  import ColorPickerElement from '@thednp/color-picker/src/color-picker-element';
102
104
 
@@ -115,7 +117,7 @@ document.body.append(myPicker);
115
117
  Other configuration options apply, see [the API Guide](https://github.com/thednp/color-picker/wiki/API).
116
118
 
117
119
 
118
- # Thanks
120
+ ## Thanks
119
121
  * Dimitris Grammatikogiannis for his [initial project](https://codepen.io/dgrammatiko/pen/zLvXwR) as well as testing and contributions
120
122
  * Serhii Kulykov for his [Vanilla Colorful](https://github.com/web-padawan/vanilla-colorful)
121
123
  * Brian Grinstead for his [TinyColor](https://github.com/bgrins/TinyColor)
@@ -124,5 +126,5 @@ Other configuration options apply, see [the API Guide](https://github.com/thednp
124
126
  * Ștefan Petre at eyecon for his [colorPicker](https://www.eyecon.ro/colorpicker/)
125
127
  * Brian Teeman for his [patience](https://github.com/joomla/joomla-cms/pull/35639)
126
128
 
127
- # License
129
+ ## License
128
130
  **ColorPicker** is released under the [MIT License](https://github.com/thednp/color-picker/blob/master/LICENSE).
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * ColorPicker v0.0.2alpha1 (http://thednp.github.io/color-picker)
2
+ * ColorPicker v1.0.1 (http://thednp.github.io/color-picker)
3
3
  * Copyright 2022 © thednp
4
4
  * Licensed under MIT (https://github.com/thednp/color-picker/blob/master/LICENSE)
5
5
  */
@@ -8,6 +8,38 @@ color-picker,
8
8
  .color-picker {
9
9
  position: relative;
10
10
  display: flex;
11
+ --white-15: rgba(255, 255, 255, 0.15);
12
+ --white-25: rgba(255, 255, 255, 0.25);
13
+ --white-33: rgba(255, 255, 255, 0.33);
14
+ --white-50: rgba(255, 255, 255, 0.5);
15
+ --white-75: rgba(255, 255, 255, 0.75);
16
+ --white-90: rgba(255, 255, 255, 0.9);
17
+ --black-15: rgba(0, 0, 0, 0.15);
18
+ --black-25: rgba(0, 0, 0, 0.25);
19
+ --black-33: rgba(0, 0, 0, 0.33);
20
+ --black-50: rgba(0, 0, 0, 0.5);
21
+ --black-75: rgba(0, 0, 0, 0.75);
22
+ --black-90: rgba(0, 0, 0, 0.9);
23
+ --dropdown-transition: transform 0.33s ease, opacity 0.33s ease;
24
+ --btn-transition: box-shadow 0.33s ease, border 0.33s ease;
25
+ --options-transition: height 0.33s ease;
26
+ --dropdown-bg: var(--black-75);
27
+ --dropdown-color: var(--white-75);
28
+ --dropdown-shadow: 0 6px 12px var(--black-33);
29
+ --dropdown-scrollbar-bg: var(--white-33);
30
+ --dropdown-scrollbar-bg-hover: var(--white-50);
31
+ --knob-bg: #000;
32
+ --knob-border: 1px solid var(--white-90);
33
+ --knob-shadow-hover: 0 0 0 6px var(--white-50);
34
+ --knob-shadow-active: 0 0 0 6px var(--white-90);
35
+ --input-border: 1px solid var(--white-15);
36
+ --input-border-hover: 1px solid var(--white-33);
37
+ --input-bg-hover: var(--black-15);
38
+ --option-color-hover: var(--black-75);
39
+ --option-bg-hover: var(--white-50);
40
+ --option-color-active: var(--black-75);
41
+ --option-bg-active: var(--white-90);
42
+ --visual-shadow: 0 0 0 1px var(--white-15) inset;
11
43
  }
12
44
 
13
45
  color-picker:focus,
@@ -23,12 +55,12 @@ color-picker:focus,
23
55
  flex-direction: column;
24
56
  width: min-content;
25
57
  padding: 0.5rem;
26
- color: rgba(255, 255, 255, 0.8);
27
- background: rgba(0, 0, 0, 0.75);
58
+ color: var(--dropdown-color);
59
+ background: var(--dropdown-bg);
28
60
  border-radius: 0.5rem;
29
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.4);
61
+ box-shadow: var(--dropdown-shadow);
30
62
  opacity: 0;
31
- transition: transform 0.33s ease, opacity 0.33s ease;
63
+ transition: var(--dropdown-transition);
32
64
  }
33
65
 
34
66
  .color-dropdown.picker {
@@ -84,13 +116,12 @@ color-picker:focus,
84
116
  border-radius: 0.25rem;
85
117
  outline: none;
86
118
  appearance: none;
87
- transition-duration: 0.33s;
88
- transition-property: box-shadow, border;
119
+ transition: var(--btn-transition);
89
120
  }
90
121
 
91
122
  .btn-appearance:focus,
92
123
  .btn-appearance:hover {
93
- box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
124
+ box-shadow: 0 0 0 3px var(--black-15);
94
125
  }
95
126
 
96
127
  /* color-preview */
@@ -101,28 +132,28 @@ color-picker:focus,
101
132
  }
102
133
 
103
134
  .txt-dark .color-preview {
104
- color: rgba(255, 255, 255, 0.8);
135
+ color: var(--white-75);
105
136
  }
106
137
 
107
138
  .txt-dark .color-preview:focus {
108
- box-shadow: 0 0 0 1px white inset, 0 0 0 3px rgba(0, 0, 0, 0.15);
139
+ box-shadow: 0 0 0 1px #fff inset, 0 0 0 3px var(--black-15);
109
140
  }
110
141
 
111
142
  .txt-dark .color-preview::placeholder {
112
- color: rgba(255, 255, 255, 0.6);
143
+ color: var(--white-50);
113
144
  }
114
145
 
115
146
  .txt-light .color-preview {
116
- color: rgba(0, 0, 0, 0.8);
147
+ color: var(--black-75);
117
148
  }
118
149
 
119
150
  .txt-light .color-preview:focus {
120
- color: rgba(0, 0, 0, 0.8);
121
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5) inset, 0 0 0 3px rgba(0, 0, 0, 0.15);
151
+ color: var(--black-75);
152
+ box-shadow: 0 0 0 1px #000 inset, 0 0 0 3px var(--black-15);
122
153
  }
123
154
 
124
155
  .txt-light .color-preview::placeholder {
125
- color: rgba(0, 0, 0, 0.6);
156
+ color: var(--black-50);
126
157
  }
127
158
 
128
159
  /* picker-toggle */
@@ -155,21 +186,21 @@ color-picker:focus,
155
186
  }
156
187
 
157
188
  .txt-light .menu-toggle {
158
- background: rgba(0, 0, 0, 0.5);
189
+ background: var(--black-50);
159
190
  }
160
191
 
161
192
  .txt-light .menu-toggle:focus,
162
193
  .txt-light .menu-toggle:focus {
163
- background: rgba(0, 0, 0, 0.7);
194
+ background: var(--black-75);
164
195
  }
165
196
 
166
197
  .txt-dark .menu-toggle {
167
- background: rgba(255, 255, 255, 0.33);
198
+ background: var(--white-33);
168
199
  }
169
200
 
170
201
  .txt-dark .menu-toggle:focus,
171
202
  .txt-dark .menu-toggle:focus {
172
- background: rgba(255, 255, 255, 0.5);
203
+ background: var(--white-50);
173
204
  }
174
205
 
175
206
  .menu-toggle svg {
@@ -200,11 +231,11 @@ color-picker:focus,
200
231
  }
201
232
 
202
233
  .scrollable:hover::-webkit-scrollbar-thumb {
203
- background-color: rgba(255, 255, 255, 0.33);
234
+ background-color: var(--dropdown-scrollbar-bg);
204
235
  }
205
236
 
206
237
  .scrollable::-webkit-scrollbar-thumb:hover {
207
- background-color: #fff;
238
+ background-color: var(--dropdown-scrollbar-bg-hover);
208
239
  }
209
240
 
210
241
  /* color-defaults */
@@ -237,27 +268,28 @@ color-picker:focus,
237
268
 
238
269
  .color-defaults .color-option:focus,
239
270
  .color-defaults .color-option:hover {
240
- background: rgba(255, 255, 255, 0.3);
271
+ color: var(--option-color-hover);
272
+ background: var(--option-bg-hover);
241
273
  outline: none;
242
274
  }
243
275
 
244
276
  .color-defaults .color-option:active,
245
277
  .color-defaults .color-option.active {
246
- color: #000;
247
- background: #fff;
278
+ color: var(--option-color-active);
279
+ background: var(--option-bg-active);
248
280
  }
249
281
 
250
282
  /* color-options grid */
251
283
  .color-options {
252
- display: grid;
253
- padding: 0;
254
- margin: 0;
255
- list-style: none;
256
284
  --grid-item-size: 2rem;
257
285
  --grid-fit: 5;
258
286
  --grid-gap: .25rem;
259
287
  --grid-height: auto;
260
288
  --grid-hover-height: auto;
289
+ display: grid;
290
+ padding: 0;
291
+ margin: 0;
292
+ list-style: none;
261
293
  grid-template-columns: repeat(var(--grid-fit), var(--grid-item-size));
262
294
  grid-template-rows: repeat(auto-fill, var(--grid-item-size));
263
295
  gap: var(--grid-gap);
@@ -267,7 +299,7 @@ color-picker:focus,
267
299
  height: var(--grid-height);
268
300
  margin: 0 -0.5rem 0 0;
269
301
  overflow-y: scroll;
270
- transition: height 0.33s ease;
302
+ transition: var(--options-transition);
271
303
  }
272
304
 
273
305
  .color-options.scrollable:hover {
@@ -312,7 +344,7 @@ color-picker:focus,
312
344
  .color-options .color-option:active::before,
313
345
  .color-options .color-option:focus::before {
314
346
  content: "";
315
- border: 3px solid rgba(255, 255, 255, 0.75);
347
+ border: 3px solid var(--white-75);
316
348
  mix-blend-mode: difference;
317
349
  }
318
350
 
@@ -333,11 +365,11 @@ color-picker:focus,
333
365
  }
334
366
 
335
367
  .txt-dark .color-options .color-option.active:after {
336
- box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.9);
368
+ box-shadow: 0 0 0 4px var(--white-90);
337
369
  }
338
370
 
339
371
  .txt-light .color-options .color-option.active:after {
340
- box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.9);
372
+ box-shadow: 0 0 0 4px var(--black-90);
341
373
  }
342
374
 
343
375
  /* color-form */
@@ -370,25 +402,27 @@ color-picker:focus,
370
402
  color: inherit;
371
403
  text-align: right;
372
404
  background: transparent;
373
- border: 1px solid rgba(255, 255, 255, 0.15);
405
+ border: var(--input-border);
374
406
  outline: none;
375
407
  }
376
408
 
377
409
  .color-input.hex {
378
410
  width: 92.5%;
379
411
  max-width: 92.5%;
380
- /* width: calc(100% - 4% - 1rem); */
381
412
  }
382
413
 
383
414
  .color-input:active,
384
415
  .color-input:focus {
385
- background: rgba(0, 0, 0, 0.25);
386
- border: 1px solid rgba(255, 255, 255, 0.33);
416
+ background: var(--input-bg-hover);
417
+ border: var(--input-border-hover);
387
418
  }
388
419
 
389
420
  /* visual control */
390
421
  .visual-control {
391
422
  height: 150px;
423
+ /* important for mobile devices */
424
+ touch-action: none;
425
+ box-shadow: var(--visual-shadow);
392
426
  }
393
427
 
394
428
  .visual-control1 {
@@ -440,22 +474,24 @@ color-picker:focus,
440
474
  top: 0;
441
475
  left: 0;
442
476
  height: 7px;
477
+ /* important for mobile devices */
478
+ touch-action: none;
443
479
  user-select: none;
444
- background-color: #000;
445
- border: 1px solid #fff;
480
+ background-color: var(--knob-bg);
481
+ border: var(--knob-border);
446
482
  border-radius: 5px;
447
483
  outline: none;
448
484
  will-change: transform;
449
485
  }
450
486
 
451
487
  .knob:hover {
452
- box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.5);
488
+ box-shadow: var(--knob-shadow-hover);
453
489
  }
454
490
 
455
491
  .knob:focus,
456
492
  .knob:active {
457
493
  z-index: 1;
458
- box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.9);
494
+ box-shadow: var(--knob-shadow-active);
459
495
  }
460
496
 
461
497
  /* color-pointer */
@@ -466,29 +502,29 @@ color-picker:focus,
466
502
  }
467
503
 
468
504
  .txt-dark .color-pointer {
469
- box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.5);
505
+ box-shadow: 0 0 0 5px var(--white-50);
470
506
  }
471
507
 
472
508
  .txt-light .color-pointer {
473
- box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.5);
509
+ box-shadow: 0 0 0 5px var(--black-50);
474
510
  }
475
511
 
476
512
  .txt-dark .color-pointer:hover {
477
- box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.75);
513
+ box-shadow: 0 0 0 5px var(--white-75);
478
514
  }
479
515
 
480
516
  .txt-light .color-pointer:hover {
481
- box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.75);
517
+ box-shadow: 0 0 0 5px var(--black-75);
482
518
  }
483
519
 
484
520
  .txt-dark .color-pointer:focus,
485
521
  .txt-dark .color-pointer:active {
486
- box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.9);
522
+ box-shadow: 0 0 0 5px var(--white-90);
487
523
  }
488
524
 
489
525
  .txt-light .color-pointer:focus,
490
526
  .txt-light .color-pointer:active {
491
- box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.9);
527
+ box-shadow: 0 0 0 5px var(--black-90);
492
528
  }
493
529
 
494
530
  /* utility */
@@ -1,2 +1,2 @@
1
- /* ColorPicker v0.0.2alpha1 | thednp © 2022 | MIT-License */
2
- color-picker,.color-picker{position:relative;display:flex}color-picker:focus,.color-picker:focus{outline:none}.color-dropdown{position:absolute;z-index:50;display:none;flex-direction:column;width:min-content;padding:.5rem;color:rgba(255,255,255,.8);background:rgba(0,0,0,.75);border-radius:.5rem;box-shadow:0 6px 12px rgba(0,0,0,.4);opacity:0;transition:transform .33s ease,opacity .33s ease}.color-dropdown.picker{left:0}.color-dropdown.menu{right:0}.open .color-dropdown.top{top:auto;bottom:100%}.color-dropdown.bottom{top:100%}.open .color-dropdown.top,.open .color-dropdown.bottom{display:flex}.color-dropdown.show{opacity:1}.color-dropdown.show.top{transform:translate(0, -5px)}.color-dropdown.show.bottom{transform:translate(0, 5px)}.color-controls{display:none;flex-wrap:wrap;justify-content:space-between;width:max-content}.btn-appearance{width:100%;height:1.5rem;padding:.6rem 1rem;font-size:1rem;line-height:1.5;border:0;border-radius:.25rem;outline:none;appearance:none;transition-duration:.33s;transition-property:box-shadow,border}.btn-appearance:focus,.btn-appearance:hover{box-shadow:0 0 0 3px rgba(0,0,0,.15)}.color-preview{box-shadow:0 0 0 1px rgba(120,120,120,.33) inset;direction:ltr}.txt-dark .color-preview{color:rgba(255,255,255,.8)}.txt-dark .color-preview:focus{box-shadow:0 0 0 1px #fff inset,0 0 0 3px rgba(0,0,0,.15)}.txt-dark .color-preview::placeholder{color:rgba(255,255,255,.6)}.txt-light .color-preview{color:rgba(0,0,0,.8)}.txt-light .color-preview:focus{color:rgba(0,0,0,.8);box-shadow:0 0 0 1px rgba(0,0,0,.5) inset,0 0 0 3px rgba(0,0,0,.15)}.txt-light .color-preview::placeholder{color:rgba(0,0,0,.6)}.picker-toggle{position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;border:0}.open .picker-toggle{z-index:-1}.menu-toggle{position:absolute;top:0;right:0;display:flex;width:3rem;height:100%;padding:0 .25rem;cursor:pointer;border:0;border-radius:0 .25rem .25rem 0}.txt-light .menu-toggle{background:rgba(0,0,0,.5)}.txt-light .menu-toggle:focus,.txt-light .menu-toggle:focus{background:rgba(0,0,0,.7)}.txt-dark .menu-toggle{background:rgba(255,255,255,.33)}.txt-dark .menu-toggle:focus,.txt-dark .menu-toggle:focus{background:rgba(255,255,255,.5)}.menu-toggle svg{width:auto;height:100%}.scrollable{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin}.scrollable::-webkit-scrollbar{width:.5rem}.scrollable::-webkit-scrollbar-track{background-color:transparent}.scrollable::-webkit-scrollbar-thumb{width:.5rem;background-color:transparent;background-clip:content-box;border:0}.scrollable:hover::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.33)}.scrollable::-webkit-scrollbar-thumb:hover{background-color:#fff}.color-defaults{display:none;flex-wrap:wrap;flex-flow:column;margin:0;list-style:none;padding-inline:0}.color-dropdown.menu .color-defaults,.color-dropdown.picker .color-controls{display:flex}.color-dropdown.menu{max-height:230px}.color-defaults .color-option{padding:.25rem .5rem;color:inherit}.color-option{cursor:pointer}.color-defaults .color-option:focus,.color-defaults .color-option:hover{background:rgba(255,255,255,.3);outline:none}.color-defaults .color-option:active,.color-defaults .color-option.active{color:#000;background:#fff}.color-options{display:grid;padding:0;margin:0;list-style:none;--grid-item-size: 2rem;--grid-fit: 5;--grid-gap: .25rem;--grid-height: auto;--grid-hover-height: auto;grid-template-columns:repeat(var(--grid-fit), var(--grid-item-size));grid-template-rows:repeat(auto-fill, var(--grid-item-size));gap:var(--grid-gap)}.color-options.scrollable{height:var(--grid-height);margin:0 -0.5rem 0 0;overflow-y:scroll;transition:height .33s ease}.color-options.scrollable:hover{height:var(--grid-hover-height)}.color-options+.color-defaults{margin-top:.25rem}.multiline+.color-defaults{flex-direction:row;flex-wrap:wrap}.multiline+.color-defaults .color-option{padding:.25rem .33rem;font-size:12px}.color-options .color-option{position:relative;width:var(--grid-item-size);height:var(--grid-item-size);overflow:hidden;text-indent:2.1rem}.color-options .color-option:active,.color-options .color-option:focus{outline:none}.color-options .color-option::before{position:absolute;top:0;right:0;bottom:0;left:0}.color-options .color-option:hover::before,.color-options .color-option:active::before,.color-options .color-option:focus::before{content:"";border:3px solid rgba(255,255,255,.75);mix-blend-mode:difference}.color-options .color-option:active,.color-options .color-option:focus{box-shadow:0 0 0 4px rgba(125,125,125,.75) inset}.color-options .color-option.active:after{position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;content:"";border-radius:4px}.txt-dark .color-options .color-option.active:after{box-shadow:0 0 0 4px rgba(255,255,255,.9)}.txt-light .color-options .color-option.active:after{box-shadow:0 0 0 4px rgba(0,0,0,.9)}.color-form{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding:.25rem 0 0;font:12px sans-serif}.color-form.hex{max-width:initial}.color-form>*{flex:1 0 0%;width:17.5%;max-width:17.5%}.color-form label{width:7.5%;max-width:7.5%;text-align:center}.color-input{color:inherit;text-align:right;background:transparent;border:1px solid rgba(255,255,255,.15);outline:none}.color-input.hex{width:92.5%;max-width:92.5%}.color-input:active,.color-input:focus{background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.33)}.visual-control{height:150px}.visual-control1{width:150px}.visual-control2,.visual-control3{width:21px;cursor:ns-resize}@media(min-width: 578px){.visual-control{height:230px}.visual-control1{width:230px}}@media(min-width: 1200px){.visual-control{height:300px}.visual-control1{width:300px}}.color-control{position:relative;display:inline-block}.color-slider{left:0;width:calc(100% - 2px);cursor:ns-resize}.color-control+.color-control{margin-left:.5rem}.knob{position:absolute;top:0;left:0;height:7px;user-select:none;background-color:#000;border:1px solid #fff;border-radius:5px;outline:none;will-change:transform}.knob:hover{box-shadow:0 0 0 6px rgba(255,255,255,.5)}.knob:focus,.knob:active{z-index:1;box-shadow:0 0 0 6px rgba(255,255,255,.9)}.color-pointer{width:7px;background-color:transparent;border:0}.txt-dark .color-pointer{box-shadow:0 0 0 5px rgba(255,255,255,.5)}.txt-light .color-pointer{box-shadow:0 0 0 5px rgba(0,0,0,.5)}.txt-dark .color-pointer:hover{box-shadow:0 0 0 5px rgba(255,255,255,.75)}.txt-light .color-pointer:hover{box-shadow:0 0 0 5px rgba(0,0,0,.75)}.txt-dark .color-pointer:focus,.txt-dark .color-pointer:active{box-shadow:0 0 0 5px rgba(255,255,255,.9)}.txt-light .color-pointer:focus,.txt-light .color-pointer:active{box-shadow:0 0 0 5px rgba(0,0,0,.9)}.v-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}
1
+ /* ColorPicker v1.0.1 | thednp © 2022 | MIT-License */
2
+ color-picker,.color-picker{position:relative;display:flex;--white-15: rgba(255, 255, 255, 0.15);--white-25: rgba(255, 255, 255, 0.25);--white-33: rgba(255, 255, 255, 0.33);--white-50: rgba(255, 255, 255, 0.5);--white-75: rgba(255, 255, 255, 0.75);--white-90: rgba(255, 255, 255, 0.9);--black-15: rgba(0, 0, 0, 0.15);--black-25: rgba(0, 0, 0, 0.25);--black-33: rgba(0, 0, 0, 0.33);--black-50: rgba(0, 0, 0, 0.5);--black-75: rgba(0, 0, 0, 0.75);--black-90: rgba(0, 0, 0, 0.9);--dropdown-transition: transform 0.33s ease, opacity 0.33s ease;--btn-transition: box-shadow 0.33s ease, border 0.33s ease;--options-transition: height 0.33s ease;--dropdown-bg: var(--black-75);--dropdown-color: var(--white-75);--dropdown-shadow: 0 6px 12px var(--black-33);--dropdown-scrollbar-bg: var(--white-33);--dropdown-scrollbar-bg-hover: var(--white-50);--knob-bg: #000;--knob-border: 1px solid var(--white-90);--knob-shadow-hover: 0 0 0 6px var(--white-50);--knob-shadow-active: 0 0 0 6px var(--white-90);--input-border: 1px solid var(--white-15);--input-border-hover: 1px solid var(--white-33);--input-bg-hover: var(--black-15);--option-color-hover: var(--black-75);--option-bg-hover: var(--white-50);--option-color-active: var(--black-75);--option-bg-active: var(--white-90);--visual-shadow: 0 0 0 1px var(--white-15) inset}color-picker:focus,.color-picker:focus{outline:none}.color-dropdown{position:absolute;z-index:50;display:none;flex-direction:column;width:min-content;padding:.5rem;color:var(--dropdown-color);background:var(--dropdown-bg);border-radius:.5rem;box-shadow:var(--dropdown-shadow);opacity:0;transition:var(--dropdown-transition)}.color-dropdown.picker{left:0}.color-dropdown.menu{right:0}.open .color-dropdown.top{top:auto;bottom:100%}.color-dropdown.bottom{top:100%}.open .color-dropdown.top,.open .color-dropdown.bottom{display:flex}.color-dropdown.show{opacity:1}.color-dropdown.show.top{transform:translate(0, -5px)}.color-dropdown.show.bottom{transform:translate(0, 5px)}.color-controls{display:none;flex-wrap:wrap;justify-content:space-between;width:max-content}.btn-appearance{width:100%;height:1.5rem;padding:.6rem 1rem;font-size:1rem;line-height:1.5;border:0;border-radius:.25rem;outline:none;appearance:none;transition:var(--btn-transition)}.btn-appearance:focus,.btn-appearance:hover{box-shadow:0 0 0 3px var(--black-15)}.color-preview{box-shadow:0 0 0 1px rgba(120,120,120,.33) inset;direction:ltr}.txt-dark .color-preview{color:var(--white-75)}.txt-dark .color-preview:focus{box-shadow:0 0 0 1px #fff inset,0 0 0 3px var(--black-15)}.txt-dark .color-preview::placeholder{color:var(--white-50)}.txt-light .color-preview{color:var(--black-75)}.txt-light .color-preview:focus{color:var(--black-75);box-shadow:0 0 0 1px #000 inset,0 0 0 3px var(--black-15)}.txt-light .color-preview::placeholder{color:var(--black-50)}.picker-toggle{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0);border:0}.open .picker-toggle{z-index:-1}.menu-toggle{position:absolute;top:0;right:0;display:flex;width:3rem;height:100%;padding:0 .25rem;cursor:pointer;border:0;border-radius:0 .25rem .25rem 0}.txt-light .menu-toggle{background:var(--black-50)}.txt-light .menu-toggle:focus,.txt-light .menu-toggle:focus{background:var(--black-75)}.txt-dark .menu-toggle{background:var(--white-33)}.txt-dark .menu-toggle:focus,.txt-dark .menu-toggle:focus{background:var(--white-50)}.menu-toggle svg{width:auto;height:100%}.scrollable{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin}.scrollable::-webkit-scrollbar{width:.5rem}.scrollable::-webkit-scrollbar-track{background-color:rgba(0,0,0,0)}.scrollable::-webkit-scrollbar-thumb{width:.5rem;background-color:rgba(0,0,0,0);background-clip:content-box;border:0}.scrollable:hover::-webkit-scrollbar-thumb{background-color:var(--dropdown-scrollbar-bg)}.scrollable::-webkit-scrollbar-thumb:hover{background-color:var(--dropdown-scrollbar-bg-hover)}.color-defaults{display:none;flex-wrap:wrap;flex-flow:column;margin:0;list-style:none;padding-inline:0}.color-dropdown.menu .color-defaults,.color-dropdown.picker .color-controls{display:flex}.color-dropdown.menu{max-height:230px}.color-defaults .color-option{padding:.25rem .5rem;color:inherit}.color-option{cursor:pointer}.color-defaults .color-option:focus,.color-defaults .color-option:hover{color:var(--option-color-hover);background:var(--option-bg-hover);outline:none}.color-defaults .color-option:active,.color-defaults .color-option.active{color:var(--option-color-active);background:var(--option-bg-active)}.color-options{--grid-item-size: 2rem;--grid-fit: 5;--grid-gap: .25rem;--grid-height: auto;--grid-hover-height: auto;display:grid;padding:0;margin:0;list-style:none;grid-template-columns:repeat(var(--grid-fit), var(--grid-item-size));grid-template-rows:repeat(auto-fill, var(--grid-item-size));gap:var(--grid-gap)}.color-options.scrollable{height:var(--grid-height);margin:0 -0.5rem 0 0;overflow-y:scroll;transition:var(--options-transition)}.color-options.scrollable:hover{height:var(--grid-hover-height)}.color-options+.color-defaults{margin-top:.25rem}.multiline+.color-defaults{flex-direction:row;flex-wrap:wrap}.multiline+.color-defaults .color-option{padding:.25rem .33rem;font-size:12px}.color-options .color-option{position:relative;width:var(--grid-item-size);height:var(--grid-item-size);overflow:hidden;text-indent:2.1rem}.color-options .color-option:active,.color-options .color-option:focus{outline:none}.color-options .color-option::before{position:absolute;top:0;right:0;bottom:0;left:0}.color-options .color-option:hover::before,.color-options .color-option:active::before,.color-options .color-option:focus::before{content:"";border:3px solid var(--white-75);mix-blend-mode:difference}.color-options .color-option:active,.color-options .color-option:focus{box-shadow:0 0 0 4px rgba(125,125,125,.75) inset}.color-options .color-option.active:after{position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;content:"";border-radius:4px}.txt-dark .color-options .color-option.active:after{box-shadow:0 0 0 4px var(--white-90)}.txt-light .color-options .color-option.active:after{box-shadow:0 0 0 4px var(--black-90)}.color-form{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding:.25rem 0 0;font:12px sans-serif}.color-form.hex{max-width:initial}.color-form>*{flex:1 0 0%;width:17.5%;max-width:17.5%}.color-form label{width:7.5%;max-width:7.5%;text-align:center}.color-input{color:inherit;text-align:right;background:rgba(0,0,0,0);border:var(--input-border);outline:none}.color-input.hex{width:92.5%;max-width:92.5%}.color-input:active,.color-input:focus{background:var(--input-bg-hover);border:var(--input-border-hover)}.visual-control{height:150px;touch-action:none;box-shadow:var(--visual-shadow)}.visual-control1{width:150px}.visual-control2,.visual-control3{width:21px;cursor:ns-resize}@media(min-width: 578px){.visual-control{height:230px}.visual-control1{width:230px}}@media(min-width: 1200px){.visual-control{height:300px}.visual-control1{width:300px}}.color-control{position:relative;display:inline-block}.color-slider{left:0;width:calc(100% - 2px);cursor:ns-resize}.color-control+.color-control{margin-left:.5rem}.knob{position:absolute;top:0;left:0;height:7px;touch-action:none;user-select:none;background-color:var(--knob-bg);border:var(--knob-border);border-radius:5px;outline:none;will-change:transform}.knob:hover{box-shadow:var(--knob-shadow-hover)}.knob:focus,.knob:active{z-index:1;box-shadow:var(--knob-shadow-active)}.color-pointer{width:7px;background-color:rgba(0,0,0,0);border:0}.txt-dark .color-pointer{box-shadow:0 0 0 5px var(--white-50)}.txt-light .color-pointer{box-shadow:0 0 0 5px var(--black-50)}.txt-dark .color-pointer:hover{box-shadow:0 0 0 5px var(--white-75)}.txt-light .color-pointer:hover{box-shadow:0 0 0 5px var(--black-75)}.txt-dark .color-pointer:focus,.txt-dark .color-pointer:active{box-shadow:0 0 0 5px var(--white-90)}.txt-light .color-pointer:focus,.txt-light .color-pointer:active{box-shadow:0 0 0 5px var(--black-90)}.v-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}